Предотвратить слияние Swagger аналогичных сопоставлений регулярных выражений в одной операции - PullRequest
0 голосов
/ 20 апреля 2020

Приложение, над которым я работаю, имеет Controller с отображениями, подобными моему примеру ниже:

@Api(tags = { "Some person API" })
@RestController
@RequestMapping("/person")
public class SomeController {

    @ApiOperation(value = "GET person A or person B")
    @GetMapping("{person:A|B}")
    public void getPersonAorB(@PathVariable String person) {
        // Perform action with person
    }

    @ApiOperation(value = "GET person C or person D")
    @GetMapping("{person:C|D}")
    public void getPersonCorD(@PathVariable String person) {
        // Perform action with person
    }
}

Хотя конечные точки работают нормально, Swagger не различает guish между конечными точками /person/{A|B} и /person/{C|D}. В результате, либо первое, либо второе сопоставление доступно в документации OpenAPI и в пользовательском интерфейсе swagger.

Я пробовал несколько вариантов, чтобы Дженкинс знал о различиях между конечными точками, таких как добавление аннотаций @Api и @ApiOperation к сопоставлениям, однако это не удалось. Я смог решить проблему, создав отдельное сопоставление для каждой конечной точки, например:

@RestController
@RequestMapping("/person")
public class SomeController {
    @GetMapping("A")
    public void getPersonA() {
        // Perform action with person "A"
    }
}

Однако я надеюсь, что может быть лучшее решение.

1 Ответ

0 голосов
/ 21 апреля 2020

Поскольку это разные конечные точки, почему одно и то же имя для обоих.

@GetMapping("/personAorB/{id}")
public void getPersonAorB(@PathVariable String id) {
    // Perform action with person
}

@ApiOperation(value = "GET person C or person D")
@GetMapping("/personCorD/{id}")
public void getPersonCorD(@PathVariable String id) {
    // Perform action with person
}

Если конечные точки одинаковы, он будет рассматривать любую одну из конечных точек.

...