Vert.x OpenAPI v4.5.10 ValidatorException: «Связанный запрос не содержит требуемого тела» для запроса POSTJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Vert.x OpenAPI v4.5.10 ValidatorException: «Связанный запрос не содержит требуемого тела» для запроса POST

Сообщение Anonymous »

Я работаю с Vert.x и OpenAPI над созданием HTTP-сервера и сталкиваюсь с исключением ValidatorException при обработке запроса с обязательным телом. В частности, сообщение об ошибке: Связанный запрос не содержит требуемого тела.

Код: Выделить всё

public void start() {
String pathContract = "./api.yaml";
contract = OpenAPIContract.from(vertx , pathContract);

contract.onSuccess(contractRes -> {
routerBuilder = RouterBuilder.create(vertx, contractRes , RequestExtractor.withBodyHandler());

requestValidator = RequestValidator.create(vertx , contractRes);
responseValidator = ResponseValidator.create(vertx , contractRes);

routerBuilder.getRoute("addUser").addHandler(this::addUser);
router = routerBuilder.createRouter();

vertx.createHttpServer().requestHandler(router).listen(8000 , res -> {
if (res.succeeded()) {
System.out.println("server is running");
} else {
System.out.println("error " + res.cause());
}
});
System.out.println("Validator created successfully.");
}).onFailure(error -> {
System.out.println("Failed to load OpenAPI contract: " + error.getMessage());
});
}

public void addUser(RoutingContext ctx) {
requestValidator.validate(ctx.request(), "addUser").onSuccess(validatedRequest -> {
JsonObject bodyData = validatedRequest.getBody().getJsonObject();
String name = bodyData.getString("name");

if (!name.isEmpty()) {
ctx.response().end("name is : " + name);
} else {
ctx.response().end("error " + name);
}
}).onFailure(err -> {
ctx.response().setStatusCode(400).end("error " + err.getMessage());
});
}

yaml:

Код: Выделить всё

  /user :
post:
summary : Add a new user
operationId: addUser
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
responses:
'201':
description : user created
Когда я отключаю проверку с помощью Route.setDoValidation(false), запрос работает без ошибок.

Код: Выделить всё

route.setDoValidation(false);
Я попытался настроить проверку запроса для маршрута POST (/addUser) в Vert.x OpenAPI v4.5.10, следуя определению OpenAPI в api.yaml. Я ожидал, что валидатор подтвердит наличие и структуру необходимого тела JSON.
Вместо этого я получил исключение ValidatorException, в котором указано: «Связанный запрос не содержит требуемого тела». Однако, когда я отключаю проверку с помощью Route.setDoValidation(false), маршрут работает как положено, но при этом происходит обход проверки, которая мне нужна для проверки структуры тела.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-contain
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»