it-swarm.com.de

Wie rufe ich Abfrageparameter in Spring Boot ab?

Ich entwickle ein Projekt mit Spring Boot. Ich habe einen Controller, der akzeptiert [~ # ~], [~ # ~] Anfragen zu erhalten.

Momentan akzeptiere ich Anfragen zu folgenden URLs:

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

ich möchte aber Anfragen mit Abfrageparametern annehmen:

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

Hier ist der Code meines Controllers:

@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;
}
90
Mehandi Hassan

Verwenden Sie @ 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;
}
158
afraisse

Während die akzeptierte Antwort von afraisse absolut richtig ist, was die Verwendung von @RequestParam, Ich würde weiterhin vorschlagen, ein optionales <> zu verwenden, da Sie nicht immer sicherstellen können, dass der richtige Parameter verwendet wird. Wenn Sie eine Ganzzahl oder Long benötigen, verwenden Sie einfach diesen Datentyp, um zu vermeiden, dass Typen später im DAO umgewandelt werden.

@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 ....
}
1
Andrew Grothe

Das hat mich auch interessiert und ich habe einige Beispiele auf der Spring Boot-Website gefunden.

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

Siehe auch hier

0
TKPhillyBurb