我對當前虛擬環境中運行gunicorn服務器上,使用下列.wsgi文件Django的REST服務:在gunicorn POST請求上的Django服務被接收爲GET?
import os, sys import site
site.addsitedir('/opt/valuation/env/lib/python2.7/site-packages')
sys.stdout = sys.stderr
os.environ['DJANGO_SETTINGS_MODULE'] = 'valuation.valuationcont.valuation.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
當我做捲曲POST調用服務完美的作品:
curl -H "Content-Type: application/json" -X POST -d '{...}' -u username:password http://localhost:8000/valuation/predict/
但是,當我在使用axios的API網關上執行相同的請求,Django服務響應我的自定義GET響應(「GET不支持,嘗試POST」)。
axios({
method: 'post',
url:'http://localhost:8000/valuation/predict',
headers:{
"Content-Type":"application/json",
"Authorization":"Basic [BASE64 ENCODING]"
},
data:{
...
}
}).then(response=>{
console.log(response.data)
}).catch(err=>{
console.log(err.toString())
})
該請求被從GET到POST轉化。 這隻發生在Django/gunicorn服務。
由於我是django/gunicorn的新手,我認爲.wsgi文件有問題。但是,如何捲曲電話然後工作?
任何幫助表示讚賞,一直在努力爭取一週。
編輯:
好不容易纔重新在我的本地機器同樣的問題。 axios將使用其API的POST請求轉換爲GET。
使用axios.post(...)
方法我設法得到403和201.雖然POSTMAN工作正常。
我有一個懷疑,因爲POST失敗axios API有一個默認回退到GET,然後不會失敗,服務響應正常(「GET不支持」應該)。
調試這個問題的新步驟是問,如何重新創建POSTMAN POST調用盡可能靠近JavaScript自POSTMAN正在工作,這顯然是造成問題的axios。
使用'curl -v'來查看是否有重定向。 –
$ curl -v curl:未指定URL! 捲曲:嘗試「捲曲 - 幫助」或「捲曲 - 手動」以獲取更多信息 – KasparTr
對不起,我的不好。從你問題中的高級捲曲線我已經暗示你知道如何使用它。實際上,您必須在URL之前的適當位置添加參數'-v'到問題中的捲曲線。 –