ฉันสร้างคอนโทรลเลอร์ในโมดูลแบบกำหนดเองที่ยอมรับ a โพสต์
ขอ.
ฉันมีการตั้งค่าที่ฉันได้รับ โพสต์
คำขอจากเซิร์ฟเวอร์แอปพลิเคชันของบุคคลที่สามไปยัง API นี้ แต่ โพสต์
คำขอมี ประเภทเนื้อหา: "application/x-www-form-urlencoded"
ในส่วนหัว
และด้วยเหตุนี้ฉันจึงได้รับข้อผิดพลาดต่อไปนี้ในข้อความบันทึกล่าสุด:
Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException: ไม่พบเส้นทางที่ตรงกับ "Content-Type: application/x-www-form-urlencoded" ใน Drupal\Core\Routing\ContentTypeHeaderMatcher->filter() (บรรทัดที่ 49 จาก /var/ www/html/web/core/lib/Drupal/Core/Routing/ContentTypeHeaderMatcher.php).```
เมื่อฉันทดสอบ API โดยใช้บุรุษไปรษณีย์:
- ถ้าฉันใช้
ประเภทเนื้อหา: "application/json"
ในส่วนหัว มีการดำเนินการโค้ดภายใน API และฉันได้รับการตอบกลับที่ถูกต้อง
- ถ้าฉันใช้
ประเภทเนื้อหา: "application/x-www-form-urlencoded"
ฉันได้รับข้อผิดพลาดเดียวกัน
ฉันไม่สามารถกำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันบุคคลที่สามเพื่อเปลี่ยน ชนิดของเนื้อหา
. ดังนั้น ทางเลือกเดียวสำหรับฉันคือกำหนดค่า API ให้ยอมรับ โพสต์
ขอกับ ประเภทเนื้อหา: "application/x-www-form-urlencoded"
. ฉันจะทำอย่างนั้นได้อย่างไร
แก้ไข:
ชั้นเรียนของฉันขยายคลาส ResourceBase การกำหนดเส้นทางของคอนโทรลเลอร์ นอกจากนี้ฉันกำลังใช้ drupal 8
* @เรสท์รีซอร์ส(
* id = "test_abc_callback",
* label = @Translation("API แบบกำหนดเองสำหรับการทดสอบ"),
* uri_paths = {
* "สร้าง" = "/api/v1/test_callback",
* }
* )