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;
}
답변
afraisse가 허용하는 답변은 사용 측면에서 절대적으로 정확 @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 ....
}
답변
Spring boot : 2.1.6에서는 아래와 같이 사용할 수 있습니다.
@GetMapping("/orders")
@ApiOperation(value = "retrieve orders", response = OrderResponse.class, responseContainer = "List")
public List<OrderResponse> getOrders(
@RequestParam(value = "creationDateTimeFrom", required = true) String creationDateTimeFrom,
@RequestParam(value = "creationDateTimeTo", required = true) String creationDateTimeTo,
@RequestParam(value = "location_id", required = true) String location_id) {
// TODO...
return response;
@ApiOperation은 Swagger api에서 제공되는 주석으로, API를 문서화하는 데 사용됩니다.
답변
나는 이것에도 관심이 있었고 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);
}