問題
使用postman測(cè)試接口時(shí)發(fā)現(xiàn)视哑,請(qǐng)求方式為put的接口绣否,如果使用form_data類型做參數(shù)如圖1,則$_POST
數(shù)組為空挡毅。使用 file_get_contents('php://input'
獲取的參數(shù)為字符串蒜撮。如圖2
原因
POST和PUT請(qǐng)求之間的根本區(qū)別體現(xiàn)在
Request-URI的不同含義。POST請(qǐng)求中的URI標(biāo)識(shí)
處理封閉實(shí)體的資源慷嗜。該資源可能是
數(shù)據(jù)接受過程淀弹,通往某些其他協(xié)議的網(wǎng)關(guān)或單獨(dú)的實(shí)體
接受注釋。相反庆械,PUT請(qǐng)求中的URI標(biāo)識(shí)了
請(qǐng)求中包含的實(shí)體-用戶代理知道要使用的URI
并且服務(wù)器不得嘗試將請(qǐng)求應(yīng)用于其他資源。如果
服務(wù)器希望將請(qǐng)求應(yīng)用于其他URI缭乘,它必須發(fā)送
301(永久移動(dòng))響應(yīng)沐序;然后用戶代理可以自己制作
有關(guān)是否重定向請(qǐng)求的決定《榧ǎ”
這意味著HTTP RFC不允許我們識(shí)別multipart / form-
PUT請(qǐng)求中的數(shù)據(jù)。
因此奴紧,您提議的關(guān)于PHP已經(jīng)如何處理請(qǐng)求的實(shí)現(xiàn)將隨后
將PHP置于不符合規(guī)范的位置。PUT用于
不同于POST的規(guī)范握巢,因此修改了PHP以平等對(duì)待它們
不會(huì)是一個(gè)理智的解決方案沫浆。
但是专执,盡管有一些簡(jiǎn)單的步驟可以完成您想要的
這將違反HTTP規(guī)范。
上邊是谷歌翻譯的
原文鏈接
解決
1.將form_data方式換成x-www-form-urlencoded
2.沒試過如圖3