如何在 Spring Boot 控制器中检索查询参数?

2022-08-31 06:50:31

我正在使用Spring Boot开发一个项目。我有一个接受GET请求的控制器。

目前,我正在接受对以下类型 URL 的请求:

http://localhost:8888/user/data/002

但我想使用查询参数接受请求:

http://localhost:8888/user?data=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;
}

答案 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

虽然 afraisse 接受的答案在使用方面是绝对正确的,但我进一步建议使用 Optional<>因为你不能总是确保使用正确的参数。此外,如果您需要整数或长整型,只需使用该数据类型,以避免稍后在 DAO 中强制转换类型。@RequestParam

@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 ....
}