Как создать множественную схему в @RequestBody спецификации swagger openapi 3.0, используя springdo c? - PullRequest
1 голос
/ 31 января 2020

У меня есть API ниже, для которого мне нужно иметь два параметра типа контента application/x-www-form-urlencoded, и поэтому я использую @RequestBody вместо @Parameter


    @Operation(summary = "Revoke given permissions", description = "Allows admin to revoke permissions to users")
    @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public void revokePermission(
            @RequestBody(description = "the permission id", content = @Content(mediaType = "application/x-www-form-urlencoded",
                    schema = { @Schema(type = "String", name = "permission_id",
                                    description = "id of the permission to be revoked", required = true)},
                            { @Schema(type = "String", name = "permission_type", 
                                    description = "the permission type")})) 
                    String permission_id, String permissionType) {

        do_something();
     }

Мне нужен чван. json быть похожим на приведенный ниже пример, но я не знаю, как сгенерировать его с помощью springdo c. Я также пытался @ArraySchema, но я не получаю нужный мне вывод. Я делаю некоторые ошибки в синтаксисе и не могу найти примеры в Интернете.

"requestBody": {
    "content": {
      "application/x-www-form-urlencoded": {
        "schema": {
           "properties": {
              "permission_id": { 
                "description": "id of the permission to be revoked",
                "type": "string"
              },
              "permission_type": {
                "description": "the permission type",
                "type": "string"
             }
           },
        "required": ["permission_id"] 
        }
      }
    }
  }

Любая помощь высоко ценится. ТИА

1 Ответ

2 голосов
/ 01 февраля 2020

Самый простой способ добиться того, чего вы хотите - это определить данные разрешений в простом объекте следующим образом:

@Schema(name = "permissionData")
public class PermissionData {

    @Schema(type = "String", name = "permiddionId", description = "id of the permission to be revoked", required = true)
    @JsonProperty("permiddionId")
    String permiddionId;

    @Schema(type = "String", name = "permissionType",description = "the permission type")
    @JsonProperty("permissionType")
    String permissionType;
}

И тогда вы будете использовать метод контроллера:

@Operation(summary = "Revoke given permissions", description = "Allows admin to revoke permissions to users")
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void revokePermission(@RequestBody(description = "the permission data") PermissionData permissionData) {

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