Java 以通用方式管理任何HTTP请求

Java 以通用方式管理任何HTTP请求,java,spring,spring-boot,Java,Spring,Spring Boot,在我的组织中,当我想要公开一个API时,我必须用一个招摇过市的合同来声明它,这对于任何更新都是一样的,并且在考虑创建或更改之前可能需要几周的时间 这就是为什么我们想到只为我们需要公开的所有API声明一个契约,并在应用程序反向代理中管理路由(请求将包括允许路由到适当端点的必要元数据): 现在的问题是: 如何在不重新实现HTTP的情况下管理此请求?是否可以将字节数组放回结构化HttpServletRequest中 /** * Manage a generic request */ @Reques

在我的组织中,当我想要公开一个API时,我必须用一个招摇过市的合同来声明它,这对于任何更新都是一样的,并且在考虑创建或更改之前可能需要几周的时间

这就是为什么我们想到只为我们需要公开的所有API声明一个契约,并在应用程序反向代理中管理路由(请求将包括允许路由到适当端点的必要元数据):

现在的问题是: 如何在不重新实现HTTP的情况下管理此请求?是否可以将字节数组放回结构化HttpServletRequest中

/**
 * Manage a generic request
 */
@RequestMapping(value = "/genericRequest", method = RequestMethod.POST)
public @ResponseBody void manageGenericRequest(@RequestBody GenericHttpRequestDto body) {

  byte[] genericHttpRequest = body.getGenericHttpRequest();

  //(...)
}

如果Spring被设置为方法参数,它将注入一个
HttpServletRequest
。此外,通配符路径映射将使方法与每个请求匹配:

@RestController
@RequestMapping("/generic-endpoint/**")
public class DemoController {

    @RequestMapping
    public ResponseEntity<Object> genericGetRequest(HttpServletRequest httpServletRequest) {
        return ResponseEntity.ok().body(httpServletRequest.getMethod());
    }
}
@RestController
@请求映射(“/generic endpoint/**”)
公共类DemoController{
@请求映射
公共响应属性genericGetRequest(HttpServletRequest HttpServletRequest){
返回ResponseEntity.ok().body(httpServletRequest.getMethod());
}
}

或者,您可以返回一个,以获得对HTTP响应的更多控制。

Spring将注入一个
HttpServletRequest
,如果它被设置为方法参数。此外,通配符路径映射将使方法与每个请求匹配:

@RestController
@RequestMapping("/generic-endpoint/**")
public class DemoController {

    @RequestMapping
    public ResponseEntity<Object> genericGetRequest(HttpServletRequest httpServletRequest) {
        return ResponseEntity.ok().body(httpServletRequest.getMethod());
    }
}
@RestController
@请求映射(“/generic endpoint/**”)
公共类DemoController{
@请求映射
公共响应属性genericGetRequest(HttpServletRequest HttpServletRequest){
返回ResponseEntity.ok().body(httpServletRequest.getMethod());
}
}

或者,您可以返回a以获得对HTTP响应的更多控制。

好的,但这不是我的问题。您在“genericHttpRequest”中有一个原始HTTP请求,其中包含头、任何内容类型。。。如何将这个原始HTTP请求恢复为结构化格式?好的,但这不是我的问题。您在“genericHttpRequest”中有一个原始HTTP请求,其中包含头、任何内容类型。。。如何将这个原始HTTP请求以结构化格式放回?