Swagger 2 при загрузке Spring - Можно ли поставить fullstop для необходимых параметров, отображаемых в API? - PullRequest
0 голосов
/ 13 января 2020

У меня есть этот API под названием /predict.

Необходимые параметры могут быть иногда score1 и score2 или

info.score1 и info.score2 в зависимости от набора данных, который мы get.

Прямо сейчас, как это выглядит на моем локальном хосте: 8080 / swagger-ui. html is enter image description here

Ниже показано, как это сделать. :

@ApiOperation(value="", response=RequestInput.class)
@RequestMapping(value="/predict", method= RequestMethod.POST, produces="application/json", consumes="application/json")
    public ResponseEntity predict(Map<String, Object> inputs, @RequestBody RequestInput requestInput) {
    ...
}

RequestInput.class выглядит так

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;

public class RequestInput {
    @ApiModelProperty(notes = "", required = true)
    @Getter private Double score1;
    @ApiModelProperty(notes = "", required = true)
    @Getter private Double score2;
}

У меня есть 2 вопроса:

  1. Возможно ли иметь
{
  "info.score1":0,
  "info.score2":0
}
Как мне установить Пример значения для части Responses? Прямо сейчас это отражает то, что на requestInput. Я хотел бы, чтобы это было
{
  "finalScore":0
}

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Для обработки значений атрибутов динамического c в запросе, вы можете добавить сеттеры setInfoScore1 & setInfoScore2 и пометить их @JsonProperty

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;

public class RequestInput {
    @ApiModelProperty(notes = "", required = true)
    @Getter private Double score1;
    @ApiModelProperty(notes = "", required = true)
    @Getter private Double score2;

    @JsonProperty("info.score1")
    public void setInfoScore1(Double score) {
        this.score = score;
    }

    @JsonProperty("info.score2")
    public void setInfoScore2(Double score) {
        this.score = score;
    }
}
0 голосов
/ 13 января 2020

Относительно вашего первого вопроса: ApiModelProperty имеет «имя», которое можно настроить для отображения желаемого имени свойства. Для второго: проверьте io.swagger.annotations.ApiResponses и io.swagger.annotations.ApiResponse. ApiResponse имеет пример свойства, которое также можно установить. Что касается части вашего вопроса, которая гласит, что ваши api могут иногда иметь одно значение, а иногда и другое: если честно, я не думаю, что это возможно, чтобы получить поведение чванства по умолчанию.

...