Score:1

?_format=json ไม่สร้าง JSON สำหรับไฟล์ REST

ธง us
J.g

ฉันใช้ Drupal 9.3 โดยเปิดใช้ REST UI, RESTful Web Services และ Serialization สำหรับ REST UI ฉันมีการกำหนดค่าต่อไปนี้สำหรับไฟล์:

วิธีการ: รับ โพสต์ ลบ แพตช์

รูปแบบคำขอที่ยอมรับ: json, xml

ผู้ให้บริการตรวจสอบสิทธิ์: คุกกี้

แต่เมื่อฉันพยายามรับ json สำหรับไฟล์ (โดยต่อท้าย ?_format=json ไปที่ url) ฉันเพิ่งได้ไฟล์กลับมา (กล่าวอีกนัยหนึ่งหน้าจะเหมือนกับไม่มี ?_format=json). สิ่งนี้จะเกิดขึ้นกับไฟล์เท่านั้น ทั้งสื่อและโหนดสร้าง json ตามปกติ

มีใครมีประสบการณ์นี้หรือรู้วิธีแก้ไขหรือไม่?

J.g avatar
us flag
J.g
ตัวอย่างเช่น เมื่อฉันมีสื่อบางอย่าง เช่น `baseurl/media/1` ฉันสามารถรับ json ได้โดยเปลี่ยน url เป็น `baseurl/media/1?_format=json` ซึ่งคล้ายกับโหนด `baseurl/node/ 1?_format=json` ฉันต้องการทำสิ่งเดียวกันกับไฟล์เช่น `baseurl/sites/default/files/2021-06/test_0.txt`
Score:1
ธง in

นี่เป็นเพราะ Drupal ส่งไฟล์จากระบบไฟล์โดยไม่มีการประมวลผลใดๆ

หากคุณต้องการให้ไฟล์ส่งเป็น JSON (ไม่ว่าจะหมายความว่าอย่างไร) คุณต้องใช้ตัวควบคุมที่โหลดไฟล์ จากนั้นทำ json_decode กับเนื้อหาและส่งคืนผลลัพธ์เป็น Symfony\Component\HttpFoundation\JsonResponse

และคุณต้องมีเส้นทางสำหรับวิธีการควบคุมนั้นด้วย

J.g avatar
us flag
J.g
ฉันค่อนข้างใหม่กับ Drupal คุณช่วยให้คำแนะนำเกี่ยวกับวิธีดำเนินการดังกล่าวได้ไหม (สร้างตัวควบคุมและเส้นทาง)
Rainer Feike avatar
in flag
คุณสามารถค้นหาทั้งหมดนี้ รวมถึงตัวอย่างโค้ดได้ที่ drupal.org เช่น ที่นี่: https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers- ตัวอย่าง
Score:0
ธง cn

คุณไม่สามารถเพิ่ม ?_format=json ไปยัง URL ของไฟล์ที่ www.example.com/sites/default/files เพราะนั่นเป็นเพียงไดเร็กทอรีของไฟล์ไซต์

เหตุใด Drupal จึงให้ json แก่คุณเมื่อคุณเพิ่ม ?_format=json ถึง www.example.com/node/123?_format=json หรือ www.example.com/media/123?_format=json? นั่นเป็นเพราะสิ่งเหล่านี้ เอนทิตี.

ดังนั้นคุณจะใช้ได้อย่างไร ?_format=json ด้วยไฟล์? คุณจะต้องใช้เอนทิตี

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือใช้โมดูลสื่อซึ่งสร้างไว้ในแกนกลาง

หากต้องการลองทำสิ่งนี้:

  1. ติดตั้งโมดูลสื่อ
  2. ไปที่ /ผู้ดูแลระบบ/โครงสร้าง/สื่อ.

ตามค่าเริ่มต้น สื่อพื้นฐานบางประเภทจะถูกสร้างขึ้น (เสียง เอกสาร รูปภาพ วิดีโอระยะไกล และวิดีโอ)

ตรวจสอบที่ ดูเมนต์ ประเภทสื่อที่เป็นตัวอย่างที่ดีของการใช้ไฟล์

คุณยังสามารถสร้างประเภทสื่อใหม่สำหรับกรณีการใช้งานเฉพาะของคุณได้อย่างง่ายดาย

จากนั้นคุณสามารถใช้ ?_format=json บน URL สื่อที่คุณสร้าง

ข้อเสียของแนวทางนี้คือคุณยังไม่สามารถรับ json จากเส้นทางไดเร็กทอรีไฟล์ คุณจะต้องใช้ URL ของเอนทิตีสื่อแทน

หากต้องการตั้งค่า URL ของเอนทิตีสื่อโดยอัตโนมัติตามรูปแบบ คุณสามารถใช้ พัทธออโต้.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา