Подтвердить что ты не робот

Как получить параметры запроса в Spring Boot?

Я занимаюсь разработкой проекта с использованием Spring Boot. У меня есть контроллер, который принимает запросы GET.

В настоящее время я принимаю запросы на следующие виды URL:

HTTP://локальный: 8888/пользователь/данные /002

но я хочу принимать запросы, используя параметры запроса:

HTTP://локальный: 8888/пользовательские данные = 002

Вот код моего контроллера:

@RequestMapping(value="/data/{itemid}", method = RequestMethod.GET)
public @ResponseBody
item getitem(@PathVariable("itemid") String itemid) {   
    item i = itemDao.findOne(itemid);              
    String itemname = i.getItemname();
    String price = i.getPrice();
    return i;
}
4b9b3361

Ответ 1

Используйте @RequestParam

@RequestMapping(value="user", method = RequestMethod.GET)
public @ResponseBody item getitem(@RequestParam("data") String itemid){

    item i = itemDao.findOne(itemid);              
    String itemname = i.getItemname();
    String price = i.getPrice();
    return i;
}

Ответ 2

Я тоже заинтересовался этим и натолкнулся на несколько примеров на сайте Spring Boot.

   // get with query string parameters e.g. /system/resource?id="rtze1cd2"&person="sam smith" 
// so below the first query parameter id is the variable and name is the variable
// id is shown below as a RequestParam
    @GetMapping("/system/resource")
    // this is for swagger docs
    @ApiOperation(value = "Get the resource identified by id and person")
    ResponseEntity<?> getSomeResourceWithParameters(@RequestParam String id, @RequestParam("person") String name) {

        InterestingResource resource = getMyInterestingResourc(id, name);
        logger.info("Request to get an id of "+id+" with a name of person: "+name);

        return new ResponseEntity<Object>(resource, HttpStatus.OK);
    }

Смотрите здесь также

Ответ 3

Хотя принятый ответ afraisse является абсолютно правильным с точки зрения использования @RequestParam, я бы также предложил использовать Необязательный <>, поскольку вы не всегда можете гарантировать, что используется правильный параметр. Кроме того, если вам нужно Integer или Long, просто используйте этот тип данных, чтобы избежать последующего приведения типов в DAO.

@RequestMapping(value="/data", method = RequestMethod.GET)
public @ResponseBody
item getitem(@RequestParam("itemid") Optional<Integer> itemid) { 
    if( itemid.isPresent()){
         item i = itemDao.findOne(itemid.get());              
         return i;
     } else ....
}