как добиться динамического URL в REST WebService - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь разработать новый веб-сервис для своего приложения.
Для этого я использую Spring REST-webservice.
В контроллере я пытаюсь получить список записей на основе переданного агента.Теперь требование, агент может быть передан или может быть нулевым. В случае нулевого агента должны быть выбраны все записи. Или только те записи, которые должны быть извлечены.

Попытка использовать приведенный ниже код для достижения динамизма., Какна один из результатов поиска, однако он не работает.

@RequestMapping(value = "/staging/{agentCode: [^/]*?}" , method = 
RequestMethod.GET)

Вот мой существующий код:

@Controller
@RequestMapping(value="/batches")   
public class BatchController {

    @SuppressWarnings({ "rawtypes" })
    @RequestMapping(value="/staging/{agentCode}", method = 
 RequestMethod.GET)         
    @ResponseBody
    public ResponseEntity IntmBatch(@PathVariable("agentCode") String 
   agentCode)       
   {
    //code here 
   }

CASE 1 : когда я использую URL, например.,

        www.example.com/myapplication/batches/staging/1234

работает нормально, и желаемый результат получен.

CASE 2 : Однако в случае, если я не передаю какой-либо параметр скажем.,

    www.example.com/myapplication/batches/staging/

где, я не передаю ни одного параметра. Он говорит, что отображение не найдено.

Подскажите, пожалуйста, как получить этот динамический URL в REST GET Запрос вызова метода.

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вместо использования @Pathvariable вы можете использовать @RequestParam для необязательных значений в URL.

Таким образом, ваш URL будет выглядеть так.

CASE 1 : www.example.com/myapplication/batches/staging?agentCode=1234 & CASE 2 : www.example.com/myapplication/batches/staging

Надеюсь, это поможет решить вашу проблему.

 @SuppressWarnings({ "rawtypes" })
 @RequestMapping(value="/staging", method = RequestMethod.GET)         
 @ResponseBody
 public ResponseEntity IntmBatch(@RequestParam(name="agentCode",required=false) String   agentCode)       
   {
    //code here 
   }
0 голосов
/ 19 февраля 2019

создайте еще один метод в контроллере с помощью @RequestMapping (value = "/ staging", method = RequestMethod.GET) следующим образом.

@RequestMapping(value = "/staging", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity returnAll() {
    System.out.println("returning  all ");
    // code here
return null;

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