在gunicorn POST请求上的Django服务被接收为GET?
我对当前虚拟环境中运行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。
回答:
您没有使用相同的URL。在请求卷曲片段http://localhost:8000/valuation/predict/,但在第二个请求http://localhost:8000/valuation/predict - 没有最后的斜线。
默认情况下,Django重定向不以斜杠结尾的URL,重定向总是GET。
以上是 在gunicorn POST请求上的Django服务被接收为GET? 的全部内容, 来源链接: utcz.com/qa/265158.html