Управление любым HTTP-запросом в общем виде - PullRequest
1 голос
/ 09 июля 2019

В моей организации, когда я хочу представить API, я должен объявить его с контрактом чванства, то же самое для любого обновления, и может потребоваться несколько недель, прежде чем создание или изменение будет учтено.

Вот почему мы пришли к идее объявить только один контракт для всех API, которые мы должны предоставить, и управлять маршрутизацией в аппликативном обратном прокси-сервере (запрос должен включать необходимые метаданные, чтобы разрешить маршрутизацию к соответствующей конечной точке):

{
  "genericHttpRequest" : base64encodedByteArrayOfAnyHttpRequest
}

Теперь вопрос: как управлять этим запросом без переопределения HTTP?Можно ли вернуть массив байтов в структурированный запрос HttpServletRequest?

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

  byte[] genericHttpRequest = body.getGenericHttpRequest();

  //(...)
}

1 Ответ

0 голосов
/ 09 июля 2019

Spring вводит HttpServletRequest, если оно установлено в качестве параметра метода. Кроме того, сопоставления пути с подстановочными символами позволят сопоставлять методы каждому запросу:

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

    @RequestMapping
    public ResponseEntity<Object> genericGetRequest(HttpServletRequest httpServletRequest) {
        return ResponseEntity.ok().body(httpServletRequest.getMethod());
    }
}

При желании вы можете вернуть ResponseEntity, чтобы получить больше контроля над вашим HTTP-ответом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...