2017-12-27 263 views
0

我對當前虛擬環境中運行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。

+0

使用'curl -v'來查看是否有重定向。 –

+0

$ curl -v curl:未指定URL! 捲曲:嘗試「捲曲 - 幫助」或「捲曲 - 手動」以獲取更多信息 – KasparTr

+0

對不起,我的不好。從你問題中的高級捲曲線我已經暗示你知道如何使用它。實際上,您必須在URL之前的適當位置添加參數'-v'到問題中的捲曲線。 –

回答

相關問題