Игнорирование "/" внутри значения переменной пути URL - PullRequest
0 голосов
/ 04 октября 2019

У меня очень странная ситуация. У меня есть конечная точка API, которая должна принимать запросы, чтобы перечислить все ресурсы, доступные для данной конечной точки, и указать конкретный ресурс. Конечная точка выглядит следующим образом:

/v1/patients

Я могу вызвать это, не передавая никаких переменных пути, и в нем будут перечислены все записи пациентов. Вот особый случай - если я хочу получить только одного пациента, я должен передать номер пациента в качестве переменной пути - и мой номер пациента выглядит примерно так - 2019 / имя пациента / октябрь / 27 -и это проблема.

когда я передаю вышеуказанное число в качестве переменной пути, я не получу требуемый ресурс, вместо этого Spring считает косые черты "/" разделителями .

Пример:

/v1/patients/2019/patientname/October/27

И я получаю ответ, будто данный путь не найден - конечно, такого пути нет.

Существует ли возможность игнорировать все косые черты между этим одним номером пациента?

Редактировать : нет возможности изменить номер пациента, поскольку он является частьюочень старая и устаревшая кодовая база, на которой работает вся система.

Edit 2 - в этой ситуации нельзя использовать кодировку URL - этот номер пациента должен быть передан какэто - Ситуация очень безумная.

1 Ответ

1 голос
/ 04 октября 2019

Вы можете попробовать что-то вроде:

@GetMapping("/v1/patients/{year}/{name}/{month}/{day}")
public ResponseEntity<Patient> getPatient(@PathVariable Integer year,
                                          @PathVariable String name,
                                          @PathVariable String month,
                                          @PathVariable Integer day) {

    String patientNumber = year + "/" + name + "/" + month + "/" + day;
    ...
}

И вот что также может работать:

@GetMapping("/v1/patients/**")
public ResponseEntity<Patient> getPatient(HttpServletRequest request) {
    String patientNumner = (String) 
            request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...