我的API在浏览器中不显示,日志仅显示500错误

3 投票
3 回答
1223 浏览
提问于 2025-04-17 18:24

根据标题,我的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])

有没有人知道我哪里出错了?

3 个回答

-1

问题是你的Python文件找不到这个导入:

from protorpc import remote

所以你可以使用终端,不用图形界面,直接找到appengine sdk的文件夹,把你的项目放到那里。对于Mac电脑来说,路径是:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/
1

请检查以下几点:

  1. 从日志中你应该能看到,你遇到了一个导入错误。在 main.py 文件中添加以下内容:

    from protorpc import remote
    
  2. 根据文档的说明:

    注意:如果你想使用 Google API Explorer 测试对你的 API 的认证调用,你还需要提供它的客户端 ID,这个 ID 可以通过 Endpoints 库找到,名称是 endpoints.API_EXPLORER_CLIENT_ID

  3. 再次检查你的日志,确保代码实际上是可以运行的。你遇到 500 错误是因为 Python 抛出了一个异常,可能你的代码还有其他问题,不过从你发布的内容来看似乎没有。

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

撰写回答