REST API อัปเดตผลิตภัณฑ์ HTTP วิธี PUT หรือ POST หรือไม่


10

เอกสารประกอบ REST API ระบุว่าPUT /V1/products/{sku}สร้างขึ้นแทนที่จะอัพเดท

นั่นเป็นข้อผิดพลาดในเอกสารเพราะฉันคิดว่ามันเป็นวิธีการอัพเดทและPOSTเป็นวิธีการสร้างหรือไม่?

คำตอบ:


5

เส้นทาง POST และ PUT ไปยังวิธีการเดียวกันประหยัด แต่ด้วย POST คุณไม่สามารถผ่านได้ sku

  <route url="/V1/products" method="POST">
        <service class="Magento\Catalog\Api\ProductRepositoryInterface" method="save"/>
        <resources>
            <resource ref="Magento_Catalog::products" />
        </resources>
    </route>
    <route url="/V1/products/:sku" method="PUT">
        <service class="Magento\Catalog\Api\ProductRepositoryInterface" method="save" />
        <resources>
            <resource ref="Magento_Catalog::products" />
        </resources>
    </route>

1
ตกลงที่เข้าใจได้ แต่ทำไมเอกสารบอกว่า PUT สร้างผลิตภัณฑ์ด้วย ฉันหมายถึง sku ในเส้นทางมักจะใช้เพื่อระบุผลิตภัณฑ์ใช่ไหม หรือสามารถสร้างผลิตภัณฑ์โดยใช้ PUT / V1 / products /: sku ด้วยได้หรือไม่
Patrik Lundgren

คุณควรใช้โพสต์เพื่อสร้างและใส่สำหรับการดำเนินการปรับปรุง เอกสารถูกสร้างโดยอัตโนมัติจาก dockblock นี่คือเหตุผลที่ put และโพสต์มีคำอธิบายเหมือนกัน
KAndy

1

ดูที่หน้านี้: http://devdocs.magento.com/guides/m1x/api/rest/Resources/Products/products.html#RESTAPI-Resource-Products-HTTPMethod-PUT-products--id

ฉันเห็น PUT:

คำอธิบาย: ช่วยให้คุณอัปเดตผลิตภัณฑ์ที่มีอยู่


มันเป็นเอกสารสำหรับ magento 1.x
KAndy

ขออภัยฉันควรจะเขียนในข้อความที่เกี่ยวข้องกับวีโอไอพี 2 หน้านั้นประมาณ v1
Patrik Lundgren

และขออภัยที่ไม่ได้อ่านว่า KAndy ได้ชี้ให้เห็นแล้ว :-) ฉันเป็นผู้เริ่มต้นที่สมบูรณ์เมื่อพูดถึง stackexchange
Patrik Lundgren

1
ดีโดยไม่คำนึงถึงเวอร์ชันวีโอไอพีที่สำคัญ API ที่เหลือมีเวอร์ชันเดียวกันใช่ไหม ดังนั้นจึงมีประโยชน์ในการชี้เรื่องนี้ออกมา
hakre

1

ฉันมีปัญหาที่คล้ายกัน แต่ในกรณีของฉัน PUT ไม่ทำงานอย่างถูกต้องเพราะ:

1) หาผลิตภัณฑ์ทั้งหมดของรถเข็น:

GET: http://my_host.dev/index.php/rest/V1/carts/8/items

(ฉันยังไม่รู้ว่าจะหารหัสลูกค้าได้อย่างไร ) ฉันพบหมายเลขที่ถูกต้องโดยเพิ่มหมายเลขจาก 1

2) คำตอบคือ:

[ { "item_id": 11, "sku": "MH07-M-Green", "qty": 1, "name": "Hero Hoodie", "price": 54, "product_type": "configurable", "quote_id": "8", "product_option":{ "extension_attributes":{ "configurable_item_options":[{"option_id": "90", "option_value": 53 }, {"option_id": "138",…] } } } ]

2) อัพเดทราคาสินค้าโดย:

{ "cartItem": { "itemId": 11, "sku": "MH07-M-Green", "qty": 2, "name": "Hero Hoodie", "price": 1000, "productType": "configurable ", "quoteId": "8" } }

3) ฉันไม่ได้อัปเดตราคาสินค้าในตะกร้า (การตอบกลับของฉันเหมือนกับในจุดที่ 1) ฉันต้องบอกด้วยว่าฉันสามารถลบรายการออกจากรถเข็นได้ ทางออกสำหรับเรื่องนี้?

ขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.