จะกำหนดการดำเนินการ POST แบบกำหนดเองใน YAML ได้อย่างไร

ในโปรเจ็กต์ api-platform ของฉัน ฉันต้องการสร้างการดำเนินการ POST ที่กำหนดเอง แม้ว่าวิธีนี้จะทำงานได้ดีเมื่อใช้คำอธิบายประกอบสำหรับการกำหนดเส้นทาง แต่ฉันยังคงติดอยู่กับการใช้ YAML

คำจำกัดความทรัพยากร API

# src/AppBundle/Resources/config/api_resources/resources.yml
AppBundle\Entity\Foo:
    collectionOperations:
        get:
            method: 'GET'
        special:
            route_name: 'foo_special'

การกำหนดเส้นทาง

# app/config/routing.yml
foo_special:
    path: '/foo/special'
    methods:  ['POST']
    defaults:
        _api_resource_class: 'AppBundle\Entity\Foo'
        _api_collection_operation_name: 'special'

ข้อความผิดพลาด:

"hydra:description": "ไม่พบตัวควบคุมสำหรับพาธ \"/foo/special\" มีการกำหนดค่าเส้นทางไม่ถูกต้อง"

มีความคิดอะไรบ้างที่ผิดที่นี่?


person Gottlieb Notschnabel    schedule 13.06.2017    source แหล่งที่มา
comment
ไม่มีการดำเนินการ POST แบบกำหนดเองใน YAML เช่นเดียวกับที่ไม่มีการดำเนินการดังกล่าวใน ASCII หรือ UTF-8 การตีความความหมายของอักขระ ASCII แม้จะรวมกันเป็นสเกลาร์ YAML ก็ทำได้โดยแอปพลิเคชัน   -  person Anthon    schedule 14.06.2017
comment
นั่นมีประโยชน์มาก ขอขอบคุณสำหรับการชี้แจง!   -  person Gottlieb Notschnabel    schedule 14.06.2017


คำตอบ (2)


การอ้างถึง meyerbaptiste บน github:

หากคุณใช้รูปแบบ ADR (เมธอด Action class + __invoke()) คุณต้องกำหนดคอนโทรลเลอร์ของคุณ (หรือการดำเนินการของคุณที่นี่) เป็นบริการ จากนั้นใช้ชื่อบริการเป็นคอนโทรลเลอร์ (เช่น _controler: app.special_action หรือ _controller: AppBundle\Action\Special)

คุณสามารถใช้คำอธิบายประกอบได้เช่นกัน โปรดดูที่ https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllers

person Gottlieb Notschnabel    schedule 22.06.2017

person    schedule
comment
ขอขอบคุณสำหรับข้อมูลโค้ดนี้ ซึ่งอาจให้ความช่วยเหลือได้ในทันทีอย่างจำกัด คำอธิบายที่ถูกต้องจะช่วยเพิ่มมูลค่าในระยะยาวได้อย่างมาก โดยแสดงให้เห็นว่า เหตุใด นี่เป็นทางออกที่ดี ของปัญหา และจะทำให้มีประโยชน์มากขึ้นสำหรับผู้อ่านในอนาคตหากมีคำถามอื่นๆ ที่คล้ายกัน โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบาย รวมถึงสมมติฐานที่คุณตั้งไว้ - person iBug; 20.02.2018
comment
คำอธิบายเล็กน้อยจะดีมาก - person Rahul Chandrabhan; 20.02.2018