私はSpring Bootを使ってプロジェクトを開発しています。私はGETリクエストを受け付けるコントローラを持っています。
現在、次の種類のURLへのリクエストを受け付けています。
しかし、クエリパラメータを使ってリクエストを受け付けたいのですが。
これが私のコントローラのコードです。
@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;
}
@ 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;
}
私もこれに興味があり、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);
}
@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 ....
}