Apa perbedaan antara @RequestParam
dan @PathVariable
saat menangani karakter khusus?
+
diterima @RequestParam
sebagai ruang.
Dalam hal @PathVariable
, +
diterima sebagai +
.
java
spring
spring-mvc
pengguna1857181
sumber
sumber
@PathVariable
dapat digunakan dalam RequestMethod@PathParam
hanya berfungsi jika ada placeholder dalam templat uri)@PathParam
adalah anotasi javax.ws.rs. docs.oracle.com/javaee/7/api/javax/ws/rs/PathParam.htmlPenjelasan @RequestParam digunakan untuk mengakses nilai parameter kueri dari permintaan. Lihatlah URL permintaan berikut:
Dalam permintaan URL di atas, nilai-nilai untuk param1 dan param2 dapat diakses seperti di bawah ini:
Berikut ini adalah daftar parameter yang didukung oleh penjelasan @RequestParam:
@PathVariable
@ PathVariable mengidentifikasi pola yang digunakan dalam URI untuk permintaan yang masuk. Mari kita lihat URL permintaan di bawah ini:
Permintaan URL di atas dapat ditulis dalam Spring MVC Anda seperti di bawah ini:
Anotasi @ PathVariable hanya memiliki satu nilai atribut untuk mengikat templat URI permintaan. Diizinkan untuk menggunakan anotasi @ PathVariable multipel dalam metode tunggal. Tetapi, pastikan bahwa tidak lebih dari satu metode memiliki pola yang sama.
Juga ada satu lagi anotasi menarik: @MatrixVariable
Dan metode Pengontrol untuk itu
Tetapi Anda harus mengaktifkan:
sumber
userName
memiliki param tipe atau tidak? Saya condong ke arah membuatnya menjadi variabel, tapi itu bisa menjadi param juga.@PathParam
dan@RequestParam
dideklarasikan tanpa menggunakan@RequestMapping
@RequestParam digunakan untuk parameter kueri (nilai statis) seperti: http: // localhost: 8080 / perhitungan / pow? Base = 2 & ext = 4
@PathVariable digunakan untuk nilai dinamis seperti: http: // localhost: 8080 / perhitungan / sqrt / 8
sumber
1)
@RequestParam
digunakan untuk mengekstrak parameter kuerisementara
@PathVariable
digunakan untuk mengekstrak data langsung dari URI:2)
@RequestParam
lebih berguna pada aplikasi web tradisional di mana data sebagian besar diteruskan dalam parameter kueri sementara@PathVariable
lebih cocok untuk layanan web RESTful di mana URL berisi nilai.3)
@RequestParam
anotasi dapat menentukan nilai default jika parameter kueri tidak ada atau kosong dengan menggunakandefaultValue
atribut, asalkan atribut yang diperlukan adalahfalse
:sumber
sumber
Kedua penjelasan berperilaku persis dengan cara yang sama.
Hanya 2 karakter khusus '!' dan '@' diterima oleh anotasi @PathVariable dan @RequestParam.
Untuk memeriksa dan mengkonfirmasi perilaku saya telah membuat aplikasi boot spring yang hanya berisi 1 controller.
Memukul Permintaan berikut, saya mendapat respons yang sama:
! @ diterima sebagai respons di kedua permintaan
sumber
mungkin saja tipe midia aplikasi / x-www-form-urlencoded mengubah ruang menjadi + , dan penerima akan mendekode data dengan mengonversi + ke ruang. centang URL untuk info lebih lanjut. http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
sumber