Сопоставление отсутствующих переменных URI с запросом сопоставления

#spring #spring-rest

#весна #spring-rest

Вопрос:

Я разработал Spring API / getFileData, который принимает три параметра URI, а именно. businessDate/fileName/RecordID. Возможно, что любая из них может быть передана как null. Но я все равно хочу, чтобы мой API работал и в этом случае. Как я могу этого добиться?

Я пробовал использовать @GetMapping("getFileData/{businessDate}/{fileName}/{recordId}", "getFileData/{businessDate}//", "getFileData/{businessDate}/{fileName}/") .. и так далее подобным образом для всех возможных комбинаций.

 @RequestMapping(value = "/getFileData/{businessDate}/{fileName}/{recordId}", method = RequestMethod.GET)
 

Я хочу, чтобы этот API работал для всех комбинаций параметров URI, если что-то будет упущено. например, кто-то запросил,

/getFileData///22 или

/getFileData/22Dec2018/ или

 /getFileData//treasure/22
 

Комментарии:

1. Рассматривали ли вы возможность передачи json и получения только заданных значений?

2. не могли бы вы предоставить фрагмент кода, пожалуйста.

3. baeldung.com/spring-request-response-body

4. Это для запросов POST.. Я использую GET here.

Ответ №1:

Вы можете сделать это с @RequestParam помощью типа java.util.Map .

В вашем дизайне у вас будут различные @PathVariable параметры в методе контроллера, а также порядок переменных пути /{var1}/{var2}... создает URL-адрес, поэтому я не думаю, что можно было бы пропустить переменную path в URL-адресе и по-прежнему вызывать тот же метод контроллера.