Как избежать запроса дополнительных входных данных в OpenAPI и Java?

#java #spring #api #swagger #openapi

#java #spring #API #развязность #openapi

Вопрос:

Возможно ли выполнить проверку, чтобы избежать отправки каких-либо дополнительных параметров в запросах?

Например, в моей конечной точке потребитель должен отправить следующие параметры: name , family , email

Я хочу избежать потребителя, отправив любые дополнительные, такие как: name , family , email , phone .

Я использую следующий способ обработки конечных точек:

Спецификация OpenAPI Swagger:

 post:
  tags:
    - '/user'
  operationId: saveUser
  requestBody:
    required: true
    content:
      application/x-www-form-urlencoded:
        schema:
          type: object
             properties:
                name:
                   type: string
                family:
                   type: string
                email:
                   type: string
  

Java:

 @RequestMapping(value = "/user", consumes = { "application/x-www-form-urlencoded" }, method = RequestMethod.POST)
default ResponseEntity<Void> postUser(
    @ApiParam(hidden = true) @RequestParam(value = "name", required = true) String name,
    @ApiParam(hidden = true) @RequestParam(value = "family", required = true) String family,
    @ApiParam(hidden = true) @RequestParam(value = "email", required = true) String email
) {
    return getDelegate().saveUser(name, family, email);
}
  

Комментарии:

1. Здравствуйте, я не уверен, что понимаю проблему, отправляет ли потребитель больше полей данных? и это проблема?

2. Да, по какой-то причине мне нужно заставить потребителей отправлять только то, что я определил в конечной точке. @MartinByers

Ответ №1:

Я не думаю, что есть решение вашей проблемы. Я думаю, что каждый разработчик API был бы более чем счастлив, если бы мог ограничить неправильный контент, отправляемый пользователем. Что вы могли бы сделать, так это проверить содержимое в вашем java-методе the content и вернуть соответствующий HTTP-код, чтобы указать ошибку. Вы можете добавить коды состояния непосредственно в свой OpenAPI YAML следующим образом:

   responses:
    "200":
      description: Correct Request, all Parameters are correct
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestSuccessful'
    "400":
      description: Bad input, some parameters are wrong or missing
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RequestError'