Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AppEngine Google Cloud Endpoint - discovery not found

I am quite new to Python and Google AppEngine, but have had around 7 years of programming experience. I am also new to StackOverflow.

I've been trying to set up a simple Google Cloud Endpoint API for my personal project, and have finished and uploaded the finished app to Google App Engine.

Here are my Endpoint API settings:

@endpoints.api(name='puzzle', version='v1', description='Puzzle Engine API')

And methods:

@endpoints.method(
        PuzzleMessage, PuzzleMessage,
        name='puzzle.generate',
        http_method='GET',
        path='generate'
    )

@endpoints.method(
        PuzzleMessage, PuzzleMessage,
        name='puzzle.solve',
        http_method='GET',
        path='solve'
    )

My app.yaml looks like:

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

# Endpoints handler
- url: /_ah/api/.*
  script: services.application

libraries:
- name: webapp2
  version: "2.5.2"

And finally services.py reads:

from google.appengine.ext import endpoints
from api import puzzle_api

application = endpoints.api_server([
                               puzzle_api.PuzzleAPI
                           ], restricted=False)

Now, the problem is that when I try to reach https://my-app-name.appspot.com/_ah/api/discovery/v1/apis, all I see is

Not Found

Also, when I hit the API Explorer at https://developers.google.com/apis-explorer/?base=https://my-app-name.appspot.com/_ah/api#p/, the list of Services is empty, and in the JavaScript console, I see a 404 error over https://my-app-name.appspot.com/_ah/api/discovery/v1/apis.

Hitting these URLs on local test server gives quite different errors. When I try to reach the API Discovery on local test server at localhost:8080/_ah/api/discovery/v1/apis, I get

{"error": {"message": "BackendService.getApiConfigs Error"}}

instead of "Not Found". Hitting the Explorer at https://developers.google.com/apis-explorer/?base=http://localhost:8080/_ah/api#p/ would now show 500 error instead of 404 in the JavaScript console as well.

I've been trying to solve this by doing many Google Searches and trying many things out, but I just cannot seem to be able to proceed any further. I would very much appreciate any help I can get from this community of professionals.

Thanks.

like image 839
Hyunil Kim Avatar asked Dec 16 '22 12:12

Hyunil Kim


1 Answers

See the documentation here: https://developers.google.com/appengine/docs/python/endpoints/api_server

You need to do the following:

Change your app.yaml to:

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /_ah/spi/.*
  script: services.application

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

Note: The url should be /_ah/spi/.* not /_ah/api/.*. Change it, then you can access your api at /_ah/api/explorer.

like image 171
Aaron Hampton Avatar answered Dec 18 '22 11:12

Aaron Hampton