يدرس هذه المقالة بشكل أساسي المحتوى ذي الصلة حول الاستخدام الصحيح لـ @requestbody ، على النحو التالي.
في الآونة الأخيرة ، كنت أتولى وظيفة مع زميل كان على وشك المغادرة. تم بناء المشروع الذي استولت عليه مع Springboot. رأيت طريقة الكتابة هذه:
requestmapping ("dothis") السلسلة العامة dothis (httpservletrequest request ، requestparam ("id") معرف طويل ، // معرف المستخدم @ @هذه طريقة تعيين طلب ، ثم أدخل عنوان URL مع المتصفح: http://127.0.0.1:8080/test/dothis؟id=1&back_url=url=RL&JSON_DATA= ("CODE":2،"Message": sest "}}}}}}
في هذه الطريقة ، استخدم @requestparam للحصول على المعلمات ، ثم استخدم requestbody لتحويل المعلمات بتنسيق JSON إلى نوع Java
عند التشغيل ، تم العثور على الخطأ: مطلوب طلب الطلب مفقود
يتطلب REquestbody استخدام MapPingJackson2httpMessageConverter لتحميله ، لكن الوثائق الرسمية لـ Springboot تشير إلى أن هذا قد تم تحميله بالفعل افتراضيًا ، ولا توجد أخطاء في كتابة سلاسل JSON و Javabeans.
لذلك ، بالنظر إلى أنه يجب أن يكون مشكلة في طلب نوع المحتوى ، لأنه لا توجد طريقة لتحديد نوع المحتوى باستخدام المتصفح لدخول عنوان URL ، لا يمكن لـ Spring العثور على جسم الطلب
لتأكيد هذه الفكرة ، اكتب فئة طلب بنفسك:
سلسلة add_url = "http://127.0.0.1:8080/test/dothis" ؛ url url = url جديد (add_url) ؛ HttpurlConnection Connection = (httpurlConnection) url.openconnection () ؛ connection.setDoInput (true) ؛ connection.setDooutput (true) ؛ connection.setRequestMethod ("post") ؛ connection.setuseCaches (false) ؛ connection.setInstanceFollowRevirects (True) ؛ connection.setRequestProperty ("content-type" ، "application/json") ؛ connection.connect () ؛ DataOutputStream out = new dataOutputStream (connection.getOutputStream ()) ؛ jsonobject obj = new jsonobject () ؛ obj.put ("الكود" ، -1002) ؛ obj.put ("Message" ، "MSG") ؛ out.writeBytes (obj.toString ()) ؛ out.flush () ؛ out.close () ؛لا يزال الطلب فشل. بعد تصحيح الأخطاء ، وجدت أن جميع تعليقات requestparam يجب إزالتها لتحقيق النجاح.
لخص
1. @REQUESTBODY يحتاج إلى تحليل جميع المعلمات طلب مثل JSON. لذلك ، لا يمكن تضمين القيمة = القيمة في عنوان URL للطلب. جميع معلمات الطلب هي JSON
2. عند إدخال عنوان URL مباشرة من خلال المتصفح ، لا يمكن لـ requestbody الحصول على كائن JSON. تحتاج إلى استخدام Java Programming أو طلب الطريقة المستندة إلى AJAX ، وتعيين نوع المحتوى على التطبيق/JSON
ما سبق هو كل شيء عن تفسير الاستخدام الصحيح لـ @REQUESTBODY ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!