Artikel ini memperkenalkan ringkasan masalah yang dihadapi dalam penggunaan Spring Cloud Ries. Itu dibagikan dengan Anda. Dengan rincian sebagai berikut:
Pertanyaan 1:
Dalam contoh sebelumnya, kami sudah membicarakannya
@RequestMapping (value = "/user/{id}", method = requestMethod.get) @getMapping ("/user/{id}") Efek dari kedua anotasi ini setara, tetapi dalam penggunaan, Anda hanya dapat menggunakan metode di atas, dan Anda tidak dapat menggunakan @getMapping secara langsung. Mari kita ubah contoh sebelumnya menjadi anotasi @getmapping untuk melihat efeknya. Kami menemukan bahwa ketika layanan dimulai kembali setelah memodifikasi anotasi, pengecualian berikut dilemparkan:
Salinan kode adalah sebagai berikut:
Disebabkan oleh: java.lang.illegalstateException: Metode findbyId tidak dijelaskan dengan tipe metode http (ex.get, post)
Pengecualian berarti bahwa kami tidak menentukan metode HTTP
Pertanyaan 2:
Dalam contoh sebelumnya, kami mengekspos layanan yang tenang sebagai berikut:
@GetMapping ("/template/{id}") pengguna publik findById (@pathvariable long id) {return client.findbyId (id); }Di sini, kami langsung menggunakan parameter metode findbyid
@PathVariable Long ID
Mari kita ubah metode Peteran untuk ini
@RequestMapping (value = "/user/{id}", method = requestMethod.get) pengguna findById (@pathvariable long id); Kemudian kami memulai layanan dan kami menemukan bahwa pengecualian dilemparkan lagi, dengan informasi pengecualian sebagai berikut:
Salinan kode adalah sebagai berikut:
Disebabkan oleh: java.lang.illegalstateException: anotasi pathvariable kosong pada param 0.
Secara kasar berarti bahwa parameter pertama dari anotasi pathvariable tidak dapat kosong, kami mengubahnya menjadi metode berikut:
@RequestMapping (value = "/user/{id}", method = requestMethod.get) pengguna findById (@pathvariable ("id") long id); Mulailah lagi dan temukan semuanya baik -baik saja.
Pertanyaan 3: Masalah multi-parameter
@RequestMapping (value = "/user/name", Method = requestMethod.get) pengguna findByUserName (nama pengguna string akhir, alamat string akhir);
Saat memulai layanan, pengecualian berikut akan dilaporkan:
Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract com.chhliu.springboot.restful.vo.User com.chhliu.springboot.restful.feignclient.UserFeignClient.findByUsername(java.lang.String,java.lang.String)
Penyebab Pengecualian: Saat menggunakan Petera, jika permintaan GET dikirim, Anda perlu menambahkan anotasi @RequestParam untuk memodifikasi sebelum parameter permintaan, dan pengontrol tidak dapat menambahkan anotasi ini untuk memodifikasi.
Solusi untuk masalah di atas adalah sebagai berikut:
@RequestMapping (value = "/user/name", method = requestMethod.get) pengguna findByUserName (@RequestParam ("username") final string username, @RequestParam ("alamat") alamat string akhir); Pertanyaan 4: Metode Permintaan 'Posting' tidak didukung
Contoh kode kesalahan:
@RequestMapping (value = "/user/name", Method = requestMethod.get) pengguna findByUserName (final string username, @RequestParam ("alamat") Alamat string akhir); Catatan: Parameter nama pengguna di atas tidak dimodifikasi dengan anotasi @RequestParam. Jika Anda mengirim permintaan, Anda akan menemukan bahwa layanan yang dipanggil telah melaporkan metode permintaan 'posting' tidak didukung. Kami jelas menggunakan metode GET. Mengapa layanan yang dipanggil dianggap sebagai metode pos? Alasannya adalah bahwa ketika nama pengguna tidak dimodifikasi oleh anotasi @RequestParam, itu akan secara otomatis diperlakukan sebagai badan permintaan. Selama ada badan, itu akan dianggap sebagai permintaan pos dengan berpura -pura, sehingga seluruh layanan dikirim sebagai permintaan pos dengan parameter permintaan dan badan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.