programing

Spring Boot 컨트롤러에서 쿼리 파라미터를 취득하려면 어떻게 해야 합니까?

minecode 2022. 7. 18. 22:32
반응형

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;
}

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

한편, 다음과 같은 사용방법에 관해서는 인정된 답변이 전적으로 옳습니다.@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 ....
}

둘 다 받아들이다@PathVariable그리고.@RequestParam동시에/user엔드포인트:

@GetMapping(path = {"/user", "/user/{data}"})
public void user(@PathVariable(required=false,name="data") String data,
                 @RequestParam(required=false) Map<String,String> qparams) {
    qparams.forEach((a,b) -> {
        System.out.println(String.format("%s -> %s",a,b));
    }
  
    if (data != null) {
        System.out.println(data);
    }
}

컬을 사용한 테스트:

  • 컬 'http://localhost:8080/user/books의
  • 컬 'http://localhost:8080/user?book=ofdreams&name=nietzsche의

봄은 부팅: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;

는 스웨거 api에서 나온다 @ ApiOperation은 평역, 그것은 apis 기록하는 데 사용된다.

같은 끝점에:둘 다 경로 변수와 쿼리 Param을 받아들이기 위해.

@RequestMapping(value = "/hello/{name}", method = RequestMethod.POST)
    public String sayHi(
            @PathVariable("name") String name, 
            @RequestBody Topic topic,
            //@RequestParam(required = false, name = "s") String s, 
            @RequestParam Map<String, String> req) {
        
        return "Hi "+name +" Topic : "+ topic+" RequestParams : "+req;
    }

URLhttp://localhost:8080/hello/testUser?city=Pune&Pin=411058&state=Maha:처럼 보인다

나는 이것 또한에서 몇가지 예들을 가로질러 스프링 부팅 사이트에 왔다 관심이 있었다.

   // 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);
    }

여기 봐

언급URL:https://stackoverflow.com/questions/32201441/how-do-i-retrieve-query-parameters-in-a-spring-boot-controller

반응형