web-dev-qa-db-ja.com

Spring Bootでクエリパラメータを取得する方法

私は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;
}
87
Mehandi Hassan

@ 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;
}
151
afraisse

私もこれに興味があり、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);
    }

こちらも参照してください

0
TKPhillyBurb

@RequestParamを使用するという点では、疑いで受け入れられている答えは絶対に正しいのですが、正しいパラメーターが使用されているとは限らないため、Optional <>を使用することをお勧めします。また、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 ....
}
0
Andrew Grothe