Diferença entre o parâmetro de propriedade de @requestMapping e @requestParam [duplicate]

Sep 13 2020

Eu descobri que ambos os parâmetros de propriedade de @requestMapping e @requestParam poderiam realizar o parâmetro de método de ligação ao endereço de URL. Então, no caso geral, eles podem ser substituídos um pelo outro?

Respostas

2 AliTahir Sep 13 2020 at 23:00

provavelmente você deveria ter elaborado sua pergunta com exemplos.

De qualquer forma, os parâmetros @RequestMapping e @RequestParams são geralmente usados ​​para finalidades diferentes

Vejamos o exemplo de:https://stackoverflow.com/ perguntas / 63871895

Neste URI, podemos ver dois manipuladores diferentes em um controlador.

@RequestMapping(path = "/questions/{id}", method = RequestMethod.GET)
public Question getQuestion(@PathVariable int id) {
// returns a particular question
}

@RequestMapping(path = "/questions", method = RequestMethod.GET)
public List<Question> getQuestions() {
// returns all questions
}

Agora, aqui, os mapeamentos de parâmetros são considerados como restrições que são aplicadas. O mapeamento de caminho primário (ou seja, o valor URI especificado) ainda precisa identificar exclusivamente o manipulador de destino, com mapeamentos de parâmetros simplesmente expressando pré-condições para invocar o manipulador.

Agora, vamos ver um exemplo para @RequestParams: https://www.google.com/search?client=opera&q=stackoverflow&sourceid=opera&ie=UTF-8&oe=UTF-8

Neste URL, podemos ver um manipulador como:

@RequestMapping(path = "/search", method = RequestMethod.GET)
public List<Results> getResults(@RequestParam Map allRequestParams) {
// returns results based on query parameters
}  

Isso sempre chamará o mesmo manipulador, independentemente de os parâmetros de consulta serem fornecidos ou não. Portanto, @RequestParams é usado para extrair os parâmetros de consulta do URL.

Portanto, geralmente, você pode tentar usar os parâmetros @RequestMapping no lugar de @RequestParams, mas terá os efeitos explicados nos exemplos acima.

fontes :https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html