由于标题表明我的API在资源管理器中不可见,我的所有日志显示如下:
INFO 2013-03-08 13:39:08,182 dev_appserver.py:723] Internal redirection to http://127.0.0.1:8080/_ah/spi/BackendService.getApiConfigs
INFO 2013-03-08 13:39:08,198 dev_appserver.py:3104] "GET /_ah/api/discovery/v1/apis HTTP/1.1" 500 -
app.yaml文件中的相关处理程序如下所示:
13 # Endpoint handlers
14 - url: /_ah/spi/.*
15 script: main.app
我的main.py代码如下:
from google.appengine.ext import endpoints
from protorpc import messages
class Location(messages.Message):
reg_id = messages.StringField(1)
phone_number = messages.StringField(2)
latitude = messages.StringField(3)
longitude = messages.StringField(4)
@endpoints.api(name='locations', version='v1', description='Location API for where are you app')
class LocationApi(remote.Service):
@endpoints.method(Location, Location, name='location.insert', path='location', http_method='POST')
def insert(self, request):
return request
app = endpoints.api_server([LocationApi])
任何人都知道我做错了什么?
答案 0 :(得分:1)
请检查以下内容:
正如您应该可以从日志中看到的那样,您收到导入错误。在main.py
添加此
from protorpc import remote
注意:如果您要使用Google API资源管理器测试对API的经过身份验证的调用,则还必须提供其客户端ID,该ID可通过端点库以
endpoints.API_EXPLORER_CLIENT_ID
的形式提供。
再次检查日志以确保代码实际运行。由于Python异常被提升,你得到的是500,你的代码可能还有其他问题,但是看起来并不像你发布的那样。
答案 1 :(得分:1)
现在我可以在其他处理程序之前列出端点处理程序。
这有效:
handlers:
# Endpoint handler
- url: /_ah/spi/.*
script: endpoints.app
# Page handlers
- url: /.*
script: home.app
这不起作用:
handlers:
# Page handlers
- url: /.*
script: home.app
# Endpoint handler
- url: /_ah/spi/.*
script: endpoints.app
答案 2 :(得分:-1)
问题是你的python文件找不到导入:
from protorpc import remote
因此,使用终端,跳过GUI,导航到appengine sdk目录并将项目放在那里。对于mac,它是:
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/