2015-07-06 60 views
1

我正在用Apigility構建API。我綁定到後端,刪除資源需要額外的數據,而不僅僅是來自URL的資源ID。所以我需要從DELETE請求的主體讀取一個參數。在Apigility中,如何訪問DELETE請求的正文內容

在POST請求的create()方法中,我可以簡單地訪問$ data參數,但這不適用於DELETE方法,因爲只提供了$id

在我的資源類'delete()方法中訪問$this->getEvent()->getRequest();方法,我將包裝到名爲'content'的屬性中的請求的主體內容(表單數據)看作字符串。

有人能指點我缺少什麼來訪問身體的鍵值對嗎?

回答

1

Apigility並不期望將任何數據傳遞給DELETE請求,因此它不會將它傳遞給事件params。你可以在你發現的請求中檢索它,並自己完成json_decode。

public function delete($id) 
{ 
    $body = $this->getEvent()->getRequest()->getContent(); 
    $data = json_decode($body, true); 
} 
+0

感謝您的回覆。不幸的是'$ body'不是有效的JSON,而是像下面這樣的字符串:'var_dump()'ed: 'string'------ WebKitFormBoundaryltcFOyHq6kVAGS1X Content-Disposition:form-data;名稱=「DEVICE_TYPE」 機器人 ------ WebKitFormBoundaryltcFOyHq6kVAGS1X-- '(長度= 149)' 我使用郵差發送刪除請求,利用其形狀的數據字段。 – hennzen

+1

問題解決:解決方案是在Postman中設置頭文件Content_type:application/json,併發送包含JSON字符串的原始主體的請求,例如, '{「device_type」:「android」}'。這樣上面的解決方案完美地工作。謝謝! – hennzen

+0

由於缺乏聲譽,唉,不能讚揚答案。 – hennzen

相關問題