Perbedaan antara parameter properti @requestMapping dan @requestParam [duplikat]

Sep 13 2020

Saya menemukan bahwa kedua parameter properti @requestMapping dan @requestParam dapat mewujudkan parameter metode pengikatan ke alamat URL? Jadi secara umum bisakah mereka diganti satu sama lain?

Jawaban

2 AliTahir Sep 13 2020 at 23:00

mungkin Anda seharusnya menjelaskan pertanyaan Anda dengan contoh-contoh.

Bagaimanapun, parameter @RequestMapping dan @RequestParams umumnya digunakan untuk tujuan yang berbeda

Mari kita ambil contoh:https://stackoverflow.com/ pertanyaan / 63871895

Dalam URI ini kita bisa melihat dua penangan berbeda dalam sebuah pengontrol.

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

Sekarang di sini, pemetaan parameter dianggap sebagai batasan yang diberlakukan. Pemetaan jalur utama (yaitu nilai URI yang ditentukan) masih harus mengidentifikasi penangan target secara unik, dengan pemetaan parameter yang hanya mengekspresikan prasyarat untuk memanggil penangan.

Sekarang, mari kita lihat contoh untuk @RequestParams: https://www.google.com/search?client=opera&q=stackoverflow&sourceid=opera&ie=UTF-8&oe=UTF-8

Di URL ini kita dapat melihat satu penangan sebagai:

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

Ini akan selalu memanggil penangan yang sama apakah parameter kueri disediakan atau tidak. Jadi @RequestParams digunakan untuk mengekstrak parameter kueri dari URL.

Jadi, secara umum, Anda dapat mencoba menggunakan parameter @RequestMapping sebagai pengganti @RequestParams, tetapi efeknya akan dijelaskan dalam contoh di atas.

sumber :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