CURL请求Tastypie API返回任何内容

时间:2013-12-11 03:35:51

标签: ajax django curl tastypie

我为移动应用程序编写了Tastypie API,以便与我的Django后端进行通信。为此目的它正常运行,但我也想用它来发出AJAX请求。我尝试潜入JS,编写一个由AJAX POST请求提交的表单。除了在单击提交时刷新页面,这似乎什么都不做。你可以在这里找到我的JS和HTML:

Django AJAX Request Fails To Send

在那里没有达成任何解决方案后,我尝试倒退并用CURL完成相同的请求。

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"name" : "apples"}' http://localhost:8000/api/v1/item/只是挂起而且永远不会返回任何内容。我必须使用CTRL+C来逃避shell。

非常感谢任何建议或协助,谢谢。

更新:

我已经安装了POSTMAN并用它来尝试发出请求。这返回了500 Internal Server Error,并显示以下错误消息:

"The format indicated 'multipart/form-data' had no available deserialization method. Please check your ``formats`` and ``content_types`` on your Serializer."

更新II:

在POSTMAN中我尝试以各种编码格式发送数据,但是每个不同的编码选项都返回no deserialization method错误,application/json除外。当我以这种方式发送{name:'apples'}时,它返回了一个错误:

"Expecting property name: line 1 column 2 (char 1)"

2 个答案:

答案 0 :(得分:0)

而不是-H,请尝试使用-d,它只是发布数据...

curl -d "info posted on to the server" http://ur ip address

-H将始终为您提供标题信息,并-d直接在服务器中发布数据

答案 1 :(得分:0)

什么是返回码?没有“不返回任何东西”这样的东西。使用curl-v运行curl -v --dump-header ...以查看更多信息。您还可以查看服务器日志或Django开发服务器的控制台,看看是否有请求进入。

  

“表示'multipart / form-data'的格式不可用   反序列化方法。请检查您的formats和   您的Serializer上有content_types。“

尝试使用

传递明确的Accept标头
-H "Accept: application/json, text/javascript, */*; q=0.01"

同时禁用CSRF中间件(以及您可以禁用的所有其他中间件),看看它是否有帮助。

然后,您的身份验证方法是什么? Api键?会议?基本认证?您可能会收到401错误。为了查看它是否到达授权点,从Tastypie docs on authorization获取UserObjectsOnlyAuthorization类,将其用作授权类,并在每个函数中插入print语句。

最后,这是HTTP PUT的一个工作示例:

curl -v --dump-header -  -H "Content-Type: application/json"  -X PUT "https://website.com/api/v1/3/?username=<user>&api_key=<api_key>"  --data '{"apple": "banana"}'