#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'