Ho passato con la documentazione di primavera di conoscere @RequestBody
, e hanno dato la seguente spiegazione:Qual è la differenza tra @RequestBody e @RequestParam?
Il parametro
@RequestBody
metodo di annotazione indica che un parametro di metodo dovrebbe essere legato al valore del corpo della richiesta HTTP. Per esempio:
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
writer.write(body);
}
Si converte il corpo della richiesta per l'argomento metodo utilizzando un
HttpMessageConverter
.HttpMessageConverter
è responsabile della conversione dal messaggio di richiesta HTTP a un oggetto e la conversione da un oggetto al corpo della risposta HTTP.
DispatcherServlet
supporta l'elaborazione basata sull'annotazione utilizzandoDefaultAnnotationHandlerMapping
eAnnotationMethodHandlerAdapter
. Nella primavera del 3,0AnnotationMethodHandlerAdapter
è esteso per supportare il@RequestBody
ed ha le seguentiHttpMessageConverter
s registrati per impostazione predefinita:...
ma la mia confusione è la frase che hanno scritto nel documento che è
L'annotazione del parametro metodo @RequestBody indica che un parametro metodo deve essere associato al valore del corpo della richiesta HTTP.
Che cosa intendono con questo? Qualcuno può fornirmi un esempio?
La definizione @RequestParam
nel doc molla è
nota che indica che un parametro metodo dovrebbe essere associato a un parametro richiesta web. Supportato per i metodi del gestore annotato negli ambienti
Servlet
ePortlet
.
Sono diventato confuso tra loro. Per favore, aiutami con un esempio su come sono diversi gli uni dagli altri.
possibile duplicato del [imparare @RequestBody di primavera e @RequestParam] (http: // StackOverflow. it/questions/3337350/learning-springs-requestbody-and-requestparam) – kryger
@kryger. Non è duplicato, perché ho la mia ricerca, ho passato il doc primavera. Ho chiesto l'esempio. Ti ho dato una definizione. Voglio un esempio che cosa è diverso tra loro. La domanda di cui sopra non ha fornito una spiegazione sufficiente al riguardo, quindi non penso che dovrebbe essere votato. –