2017-12-27 258 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'到问题中的卷曲线。 –

回答

相关问题