Python / Google App Engine 中的 PUT 参数无效
我正在用Python和Google App Engine上的webapp框架开发一个简单的RESTful网络服务。
基本上,我通过AJAX/jquery发送所有请求——对于POST请求,一切都很顺利,但当我用PUT请求发送数据时,参数却是空的,没被处理。
这是我的PUT请求:
$.ajax({
type: "PUT",
url: "/boxes",
data: { name: this.name, archived: this.archived },
success: function(msg){
}
});
Firebug显示我正在发送:
Parameter application/x-www-form-urlencoded
archived false
name 123112323asdasd
但是使用这段Python代码:
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util, template
from google.appengine.ext import db
from google.appengine.api.datastore_types import *
from django.utils import simplejson as json
import cgi
import datetime
class BoxHandler(webapp.RequestHandler):
def post(self): #working
print "test"
self.response.out.write(self.request.get("name"))
def put(self):
print "test" #not working
self.response.out.write(self.request.get("name"))
只会返回
test
Status: 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0
所以……嗯,我是不是漏掉了什么?
谢谢,
马丁
1 个回答
4
你代码里的 put
方法调用是正确的,因为你可以看到 test
被打印出来了;不过,参数解析这部分有问题,这个问题在 webob
类里是一个未解决的问题。
你可以尝试解析请求的 body 内容,来提取查询字符串。
def put(self):
print "test"
name = parse_body_to_extract_your_parameter(self.request.body)
self.response.out.write(name)