Score:0

แยกไซต์เป็นเลเยอร์การนำเสนอ (แสดง) สำหรับไมโครเซอร์วิสภายนอกหรือไม่

ธง dk

ฉันเข้าใจว่า Drupal 9 ที่แกะกล่องนั้นมีความสามารถสูงมากเนื่องจาก Drupal แบบแยกส่วนหรือที่เรียกว่า Headless ทำหน้าที่เป็นแบ็คเอนด์สำหรับแอปอื่นๆ (ความสามารถหลัก REST, JSONAPI)

อย่างไรก็ตาม ฉันกำลังคิดในทางกลับกัน: การให้ Drupal 9 เป็นเลเยอร์การนำเสนอจริงที่ดึงและแสดงข้อมูลจาก API ของไมโครเซอร์วิสภายนอกต่างๆ ตัวอย่างเช่น API ภายนอกส่งออกรายการผลิตภัณฑ์ JSON และหน้า Drupal ร้องขอข้อมูลนั้นเพื่อแสดงบนหน้านั้น

อาจไม่จำเป็นต้องจับคู่ข้อมูลที่ดึงเข้ากับเอนทิตี Drupal แต่เพียงแสดงข้อมูลเหล่านั้นที่หน้า Drupal (เหตุผลที่ฉันไม่ต้องการแมปข้อมูลและจัดเก็บไว้ใน Drupal คือมันจะสร้างชุดข้อมูลที่ซ้ำกัน ซึ่งอาจไม่ใช่แนวปฏิบัติที่ดีสำหรับการตั้งค่าสถาปัตยกรรมไมโครเซอร์วิส)

มีแนวทางที่แนะนำ โมดูลสำหรับกรณีดังกล่าวในตลาดสำหรับ Drupal 9 หรือไม่ หากไม่มีโมดูลใดที่เหมาะกับกรณีนี้ ส่วนใดของ dev ที่ฉันสามารถตรวจสอบเพิ่มเติมได้ (เช่น hooks ที่ใช้โดยโมดูล Views)


อัปเดต @ 26 กันยายน 2021

สำหรับการอ้างอิงและใครก็ตามอาจสนใจในสถานการณ์ดังกล่าว ฉันลงเอยด้วยระบบนิเวศฟีด

ด้านล่างนี้คือโมดูลที่สนับสนุนซึ่งทำงานร่วมกันสำหรับสิ่งนี้:

  • ฟีด
  • Parsers ที่ขยายได้
  • ฟีดการงัดแงะ

Feeds (หลัก) ไม่มีการแยกวิเคราะห์รูปแบบ JSON, Feeds Extensive Parsers (feeds_ex) เพิ่มการรองรับ JSON, ใช้ไลบรารี JsonPath ใช้ 'นักแต่งเพลง' เสมอเพื่อติดตั้งการพึ่งพาเหล่านี้เพื่อแก้ปัญหา ใช้โมดูล Ludwig เพื่อตรวจสอบว่าขาดไลบรารีที่จำเป็นหรือไม่

ข้อมูลอ้างอิงที่ดีที่นี่: https://www.mediacurrent.com/blog/drupal-8-feeds-import-external-json-api/


อัปเดต: อีกด้วย

https://www.drupal.org/project/views_json_source

Score:1
ธง cn

อาจไม่จำเป็นต้องจับคู่ข้อมูลที่ดึงเข้ากับเอนทิตี Drupal เพียงแค่ เพียงนำไปแสดงที่หน้า Drupal

หากคุณดึงมาจากแหล่งภายนอกและไม่ได้ใช้เอนทิตี เหตุใดจึงต้องใช้ Drupal ด้วยล่ะ ฟังก์ชันของโมดูล JSON:API คือการเปิดเผยเอนทิตี Drupal ผ่าน JSON:API; นั่นคือทั้งหมดที่ทำ ดังนั้นหากคุณใช้เส้นทาง JSON:API คุณจะต้องใช้เอนทิตี

อย่างไรก็ตาม Views และโมดูล Drupal อื่นๆ ส่วนใหญ่อาศัยแนวคิดของเอนทิตีเป็นหลัก API เอนทิตีเป็นโมดูลร่วมใน D7 แต่เป็นส่วนหนึ่งของแกนหลักและหนึ่งในแนวคิดพื้นฐานของ D8/D9

ดังนั้น หากต้องการสร้างเลเยอร์การแสดงผล ฉันจะเริ่มต้นด้วยการหาวิธีแมปข้อมูลภายนอกของคุณเข้ากับเอนทิตี Drupal จากนั้นให้ทดลองกับ JSON:API ก่อน REST เพราะหากคุณมีเอนทิตีอยู่แล้ว JSON:API จะตั้งค่าได้รวดเร็วมาก (เนื่องจากจะแสดงเอนทิตีทั้งหมดโดยค่าเริ่มต้น) และให้พื้นที่ว่างแก่คุณในการทดลองด้วย

บางโมดูลที่อาจมีประโยชน์:

  • ฟีด เพื่อดึงข้อมูลภายนอกและ ฟีดการงัดแงะ เพื่อปรับแต่ง (ก่อนกระบวนการ)
  • ฟิลด์ JSON หรือ ฟิลด์ JSONB เพื่อเก็บข้อมูล JSON ภายนอกเป็น JSON ทำให้ไม่ต้องแยกวิเคราะห์ทันที (จำกัดเฉพาะฐานข้อมูลที่รองรับ JSON)
  • JSON:API Explorer, PHPMyAdmin สำหรับ JSON:API
  • JSON: API พิเศษ-- แม้จะมีชื่อ แต่โมดูลนี้อาจจำเป็น ช่วยให้คุณเปลี่ยนชื่อทรัพยากร JSON:API แทนการใช้ชื่อหลักที่เป็นค่าเริ่มต้น และยังช่วยให้คุณปิดการเข้าถึงกลุ่มของเอนทิตีได้อย่างง่ายดาย (ซึ่งคุณต้องการ เนื่องจากการเปิดเผยทุกอย่างเช่น JSON:API ตามค่าเริ่มต้นอาจมากเกินไป)
  • JSON: API รวม เพื่อรวม (ดึงการอ้างอิงเอนทิตีโดยอัตโนมัติ)
  • JSON:ทรัพยากร API เพื่อกำหนดปลายทางของคุณเองเพื่อทำสิ่งที่คุณต้องการ (สำหรับการประมวลผลแบบกำหนดเองทั้งหมด)
dk flag
ขอบคุณสำหรับคำแนะนำเหล่านี้ มันช่วยได้ ฉันทราบดีว่านี่อาจเป็นการอภิปรายที่มีความคิดเห็นมากกว่าคำถาม มันอาจจะถูกปิด แต่คำตอบของคุณมีประโยชน์ ขอบใจ!
dk flag
Re: "หากคุณดึงข้อมูลมาจากแหล่งภายนอก และไม่ได้ใช้เอนทิตี ทำไมถึงต้องใช้ Drupal ด้วยล่ะ" เพราะฉันยังต้องการใช้ D9 นอกกรอบระบบย่อยที่มีประสิทธิภาพมาก เช่น เราเตอร์, ความปลอดภัย, seo, แคช, ธีม ฯลฯ

โพสต์คำตอบ

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