SwaggerUI отсутствует заголовок contenType в POST-запросе - PullRequest
0 голосов
/ 27 сентября 2018

Я использую swaggerUI для проверки моей спецификации.

Методы GET или POST с телом работают нормально, но у меня возникают проблемы при использовании метода POST с @FormParam.Мой сервер говорит, что в запросе отсутствует тип содержимого, и это правильно, сгенерированная команда SwaggerUi выглядит следующим образом

curl -X POST "https://localhost:8184/authentication/password/reset?username=chrome&newPassword=11114444" -H "accept: application/json"

мой код swaggerUI выглядит так

 /user/delete:
post:
  tags:
  - "Usermanagement"
  summary: Löscht einen Nutzer
  description: Löscht einen Nutzer anhand seines "username"
  consumes: 
  - application/x-www-form-urlencoded
  produces: 
  - application/json
  parameters: 
  - in: query
    name: username
    type: "string"
    description: Benutzername
  responses:
    200:
      description: Nutzer wurde erfolgreich gelöscht
    400:
      description: Der Löschvorgang konnte nicht ausgeführt werden

, тогда как мойКод сервера выглядит так:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
@Path("/activation")
public Response activation(@NotNull @FormParam("username") String username,
        @NotNull @FormParam("active") Boolean active) {
    return runWithExceptionMapper(() -> {
        if (active) {
            userService.activateUser(username);
        } else {
            userService.deactivateUser(username);
        }
    });
}

Код сервера в целом работает нормально, он работает как из браузера, так и из Почтальона.

Я просто не могу понять, почему swaggerUI не отправляет contenttype с помощью команды curl или как я могу заставить его сделать это.

EDIT: я понял, что brwoser неотправка команды curl, но http-запроса.Но в полезной нагрузке все еще отсутствует контент, тип namly.Почему мой сервер не знает, что делать с «неизвестными» данными.

1 Ответ

0 голосов
/ 01 октября 2018

Проблема решена.

Ошибка была в типе моих параметров.Вместо запроса это должен быть formData (очевидно).

Правильный код спецификации выглядит следующим образом

/user/delete:
post:
tags:
- "Usermanagement"
summary: Löscht einen Nutzer
description: Löscht einen Nutzer anhand seines "username"
consumes: 
- application/x-www-form-urlencoded
produces: 
- application/json
parameters: 
  - in: formData
  name: username
  type: "string"
  description: Benutzername
responses:
  200:
    description: Nutzer wurde erfolgreich gelöscht
  400:
    description: Der Löschvorgang konnte nicht ausgeführt werden
...