405 方法不允许 - 在 Google App Engine 中获取请求,语言 Python
405 Method not Allowed- Get request in Google App Engine, language Python
我知道有很多这样的问题,我花了几个小时来研究它们并试图找出答案,但我找不到问题所在。我的 main.py 看起来像这样:
import webapp2
from google.appengine.api import oauth
app = webapp2.WSGIApplication([
('/org', 'org.Organization'),
], debug=True)
app.router.add(webapp2.Route(r'/org/<id:[0-9]+><:/?>', 'org.Organization'))
app.router.add(webapp2.Route(r'/org/search', 'org.OrgSearch'))
app.router.add(webapp2.Route(r'/resources', 'resources.Resource'))
app.router.add(webapp2.Route(r'/resources/<rid:[0-9]+>/org/<oid:[0-9]+><:/?>', 'resources.ResourceOrgs'))
我的 get 和 post 请求的代码如下所示:
导入 webapp2
从 google.appengine.ext 导入 ndb
导入数据库
导入 json
class Organization(webapp2.RequestHandler):
def post(self):
if 'application/json' not in self.request.accept:
self.response.status = 406
self.response.status_message = "API only supports application/json MIME type"
return
new_org = dbase.Organization()
name = self.request.get('name', default_value=None)
phone = self.request.get('phone', default_value=None)
street = self.request.get('street', default_value=None)
city = self.request.get('city', default_value=None)
state = self.request.get('state', default_value=None)
if name:
new_org.name = name
else:
self.response.status = 400
self.response.status_message = "Invalid request, Name is required"
if phone:
new_org.phone = phone
if street:
new_org.street = street
if city:
new_org.city = city
else:
self.response.status = 400
self.response.status_message = "Invalid request, City is required"
if state:
new_org.state = state
else:
self.response.status = 400
self.response.status_message = "Invalid request, State is required"
key = new_org.put()
out = new_org.to_dict()
self.response.write(json.dumps(out))
return
def get(self, **kwargs):
if 'application/json' not in self.request.accept:
self.response.status = 406
self.response.status_message = "API only supports application/json MIME type"
if 'id' in kwargs:
out = ndb.Key(dbase.Organization, int(kwargs['id'])).get().to_dict()
self.response.write(json.dumps(out))
else:
q = dbase.Organization.query()
keys = q.fetch(keys_only=True)
results = { 'keys' : [x.id() for x in keys]}
self.response.write(json.dumps(results))
我希望有人能帮助我,因为我想不通而且我 运行 没时间了。我正在使用记事本++,但我更改了它,因此它使用空格而不是制表符。
尝试缩进 def get() 和 def post()
我知道有很多这样的问题,我花了几个小时来研究它们并试图找出答案,但我找不到问题所在。我的 main.py 看起来像这样:
import webapp2
from google.appengine.api import oauth
app = webapp2.WSGIApplication([
('/org', 'org.Organization'),
], debug=True)
app.router.add(webapp2.Route(r'/org/<id:[0-9]+><:/?>', 'org.Organization'))
app.router.add(webapp2.Route(r'/org/search', 'org.OrgSearch'))
app.router.add(webapp2.Route(r'/resources', 'resources.Resource'))
app.router.add(webapp2.Route(r'/resources/<rid:[0-9]+>/org/<oid:[0-9]+><:/?>', 'resources.ResourceOrgs'))
我的 get 和 post 请求的代码如下所示: 导入 webapp2 从 google.appengine.ext 导入 ndb 导入数据库 导入 json
class Organization(webapp2.RequestHandler):
def post(self):
if 'application/json' not in self.request.accept:
self.response.status = 406
self.response.status_message = "API only supports application/json MIME type"
return
new_org = dbase.Organization()
name = self.request.get('name', default_value=None)
phone = self.request.get('phone', default_value=None)
street = self.request.get('street', default_value=None)
city = self.request.get('city', default_value=None)
state = self.request.get('state', default_value=None)
if name:
new_org.name = name
else:
self.response.status = 400
self.response.status_message = "Invalid request, Name is required"
if phone:
new_org.phone = phone
if street:
new_org.street = street
if city:
new_org.city = city
else:
self.response.status = 400
self.response.status_message = "Invalid request, City is required"
if state:
new_org.state = state
else:
self.response.status = 400
self.response.status_message = "Invalid request, State is required"
key = new_org.put()
out = new_org.to_dict()
self.response.write(json.dumps(out))
return
def get(self, **kwargs):
if 'application/json' not in self.request.accept:
self.response.status = 406
self.response.status_message = "API only supports application/json MIME type"
if 'id' in kwargs:
out = ndb.Key(dbase.Organization, int(kwargs['id'])).get().to_dict()
self.response.write(json.dumps(out))
else:
q = dbase.Organization.query()
keys = q.fetch(keys_only=True)
results = { 'keys' : [x.id() for x in keys]}
self.response.write(json.dumps(results))
我希望有人能帮助我,因为我想不通而且我 运行 没时间了。我正在使用记事本++,但我更改了它,因此它使用空格而不是制表符。
尝试缩进 def get() 和 def post()