Różnica między parametrem właściwości @requestMapping i @requestParam [duplicate]

Sep 13 2020

Zauważyłem, że zarówno parametr właściwości @requestMapping, jak i @requestParam mogą zrealizować parametr metody powiązania z adresem URL? Czy w ogólnym przypadku można je zastąpić sobą?

Odpowiedzi

2 AliTahir Sep 13 2020 at 23:00

prawdopodobnie powinieneś był rozwinąć swoje pytanie z przykładami.

W każdym razie parametry @RequestMapping i @RequestParams są zwykle używane do różnych celów

Weźmy przykład:https://stackoverflow.com/ pytania / 63871895

W tym identyfikatorze URI możemy zobaczyć dwa różne programy obsługi w kontrolerze.

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

Tutaj mapowania parametrów są traktowane jako wymuszane ograniczenia. Odwzorowanie ścieżki podstawowej (tj. Określona wartość URI) nadal musi jednoznacznie identyfikować docelową procedurę obsługi, a odwzorowania parametrów po prostu wyrażają warunki wstępne wywołania procedury obsługi.

Zobaczmy teraz przykład dla @RequestParams: https://www.google.com/search?client=opera&q=stackoverflow&sourceid=opera&ie=UTF-8&oe=UTF-8

W tym adresie URL możemy zobaczyć jedną procedurę obsługi jako:

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

Spowoduje to zawsze wywołanie tego samego programu obsługi niezależnie od tego, czy podano parametry zapytania, czy nie. Tak więc @RequestParams służy do wyodrębniania parametrów zapytania z adresu URL.

Tak więc ogólnie możesz spróbować użyć parametrów @RequestMapping zamiast @RequestParams, ale będzie to miało efekty wyjaśnione w powyższych przykładach.

źródła :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