415 Stimmen

@RequestParam vs. @PathVariable

Was ist der Unterschied zwischen @RequestParam y @PathVariable bei der Behandlung von Sonderzeichen?

+ wurde angenommen von @RequestParam als Raum.

Im Fall von @PathVariable , + wurde angenommen als + .

1voto

Mathew Menalish Punkte 31
@PathVariable - must be placed in the endpoint uri and access the query parameter value from the request
@RequestParam - must be passed as method parameter (optional based on the required property)
 http://localhost:8080/employee/call/7865467

 @RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
 public List<Calls> getAgentCallById(
            @PathVariable(“callId") int callId,
            @RequestParam(value = “status", required = false) String callStatus) {

    }

http://localhost:8080/app/call/7865467?status=Cancelled

@RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
public List<Calls> getAgentCallById(
            @PathVariable(“callId") int callId,
            @RequestParam(value = “status", required = true) String callStatus) {

}

1voto

Beide Anmerkungen verhalten sich genau gleich.

Nur 2 Sonderzeichen '!' und '@' werden von den Annotationen @PathVariable und @RequestParam akzeptiert.

Um das Verhalten zu überprüfen und zu bestätigen, habe ich eine Spring-Boot-Anwendung erstellt, die nur einen Controller enthält.

 @RestController 
public class Controller 
{
    @GetMapping("/pvar/{pdata}")
    public @ResponseBody String testPathVariable(@PathVariable(name="pdata") String pathdata)
    {
        return pathdata;
    }

    @GetMapping("/rpvar")
    public @ResponseBody String testRequestParam(@RequestParam("param") String paramdata)
    {
        return paramdata;
    }
}

Auf die folgenden Anfragen erhielt ich dieselbe Antwort:

  1. localhost:7000/pvar/!@#$%^&*()_+-=[]{}|;':",./<>?
  2. localhost:7000/rpvar?param=!@#$%^&*()_+-=[]{}|;':",./<>?

!@ wurde als Antwort in beiden Anfragen empfangen

0voto

sachin dhembre Punkte 1

@RequestParam:Wir können sagen, dass es sich um einen Abfrage-Parameter wie ein Schlüssel-Wert-Paar handelt. @PathVariable:- kommt von URI

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X