บทความนี้ส่วนใหญ่ศึกษาเนื้อหาที่เกี่ยวข้องเกี่ยวกับการใช้ @requestbody ที่ถูกต้องดังนี้
เมื่อเร็ว ๆ นี้ฉันได้รับงานกับเพื่อนร่วมงานที่กำลังจะจากไป โครงการที่ฉันเข้ายึดครองนั้นถูกสร้างขึ้นด้วย Springboot ฉันเห็นวิธีการเขียนนี้:
@requestmapping ("dothis") สตริงสาธารณะ dothis (คำขอ httpservletrequest, @requestparam ("id") id ยาว, // id user id @requestparam ("back_url") สตริง back_url, // callback address @requestbody classนี่คือวิธีการทำแผนที่คำขอจากนั้นป้อน URL ด้วยเบราว์เซอร์: http://127.0.0.1:8080/test/dothis?id=1&back_url=url&json_data= {Comcode":2,"message":
ในวิธีนี้ให้ใช้ @requestparam เพื่อรับพารามิเตอร์จากนั้นใช้ @requestbody เพื่อแปลงพารามิเตอร์ในรูปแบบ JSON เป็นประเภท Java
เมื่อทำงานพบข้อผิดพลาด: ตัวคำขอที่ต้องการหายไป
@requestbody ต้องใช้ MappingJackson2httpmessageConverter เพื่อโหลด แต่เอกสารอย่างเป็นทางการของ Springboot กล่าวว่าสิ่งนี้ถูกโหลดโดยค่าเริ่มต้นแล้วและไม่มีข้อผิดพลาดในการเขียนสตริง JSON และ Javabeans
ดังนั้นเมื่อพิจารณาว่าควรเป็นปัญหาในการร้องขอประเภทเนื้อหาเนื่องจากไม่มีวิธีที่จะกำหนดประเภทเนื้อหาโดยใช้เบราว์เซอร์เพื่อเข้าสู่ URL สปริงไม่สามารถหาร่างคำขอได้
เพื่อยืนยันความคิดนี้เขียนชั้นเรียนด้วยตัวเอง:
String add_url = "http://127.0.0.1:8080/test/dothis"; url url = url ใหม่ (add_url); การเชื่อมต่อ httpurlConnection = (httpurlConnection) url.openconnection (); Connection.setDoInput (จริง); Connection.setDooutput (จริง); Connection.setRequestMethod ("โพสต์"); Connection.setUsecaches (เท็จ); Connection.setInstanceFollowRECTS (จริง); Connection.setRequestProperty ("เนื้อหาประเภท", "Application/JSON"); Connection.connect (); dataOrtputStream out = new dataOutputStream (Connection.getOutputStream ()); jsonObject obj = new JsonObject (); obj.put ("รหัส", -1002); obj.put ("ข้อความ", "msg"); out.writeBytes (obj.toString ()); out.flush (); out.close ();คำขอยังคงล้มเหลว หลังจากการดีบักฉันพบว่าคำอธิบายประกอบ @requestparam ทั้งหมดจะต้องถูกลบออกเพื่อประสบความสำเร็จ
สรุป
1. @requestbody ต้องแยกพารามิเตอร์การร้องขอทั้งหมดเป็น JSON ดังนั้นคีย์ = ค่าไม่สามารถรวมอยู่ใน URL คำขอ พารามิเตอร์คำขอทั้งหมดคือ JSON
2. เมื่อป้อน URL โดยตรงผ่านเบราว์เซอร์ @requestbody ไม่สามารถรับวัตถุ JSON ได้ คุณต้องใช้การเขียนโปรแกรม Java หรือคำขอวิธี AJAX และตั้งค่าประเภทเนื้อหาเป็น Application/JSON
ข้างต้นคือทั้งหมดที่เกี่ยวกับการตีความการใช้งานที่ถูกต้องของ @requestbody และฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!