2013-03-27 3 views
4

이것은 (유효한 경우) 엔드 포인트의 다음 버그로 인해 발생하는 것으로 의심되지만 어딘가에 해결 방법이 있다고 확신합니다.배포시 내 API가 표시되지 않는 이유는 무엇입니까?

https://code.google.com/p/googleappengine/issues/detail?id=9050&can=4&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

단계 재현 :

  1. 변경하는 방법 이름, 메소드의 API 이름 또는 매개 변수 목록을 엔드 포인트 클래스.
  2. endpoints.sh 스크립트를 실행하여 API 파일을 생성하십시오.
  3. API 파일을 로컬에서 검사하고 변경 사항을 확인하십시오. 여태까지는 그런대로 잘됐다.
  4. 서버의 기본 앱 버전으로 배포합니다.
  5. 로그에서 /_ah/spi/BackendService.getApiConfigs에 대한 호출을 확인하십시오. 오류가 없습니다!
  6. API 탐색기로 이동하여 브라우저 캐시를 지우십시오. API를 검사하십시오. 변화가 없습니다.
  7. 예 : 브라우저에서 API 파일을 직접 요청하십시오. https : // [app-id] .appspot.com/_ah/api/discovery/v1/apis/[api-name]/v1/rpc 변경 사항이 없습니다.

위와 같이 좌절하여 새로운 앱 ID를 처음부터 완전히 시작하기로 결정했습니다. API 탐색기에 아직 API가 표시되지 않고 위의 7 단계에서 URL에 404가 표시됩니다.

여기 내 엔드 포인트 클래스의 :

@Api(name = "ditto", version = "v1") 
public class CategoryEndpoint extends BaseEndpoint { 

    @SuppressWarnings("unused") 
    private static final Logger log = Logger.getLogger(CategoryEndpoint.class.getName()); 

    @ApiMethod(name = "category.list") 
    public WireCategory list() { 
     Category root = categoryDao.getRoot(); 
     WireCategory wireRootCategory = new WireCategory(root); 

     return wireRootCategory; 
    } 

} 

그리고 여기에 생성 된이 .api 파일입니다 :

:

{ 
    "extends" : "thirdParty.api", 
    "abstract" : false, 
    "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
    "name" : "ditto", 
    "version" : "v1", 
    "defaultVersion" : false, 
    "adapter" : { 
    "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
    "deadline" : 10.0, 
    "type" : "lily" 
    }, 
    "auth" : { 
    "allowCookieAuth" : false 
    }, 
    "frontendLimits" : { 
    "unregisteredUserQps" : -1, 
    "unregisteredQps" : -1, 
    "unregisteredDaily" : -1, 
    "rules" : [ ] 
    }, 
    "cacheControl" : { 
    "type" : "no-cache", 
    "maxAge" : 0 
    }, 
    "methods" : { 
    "ditto.category.list" : { 
     "path" : "list", 
     "httpMethod" : "GET", 
     "scopes" : [ ], 
     "audiences" : [ ], 
     "clientIds" : [ ], 
     "rosyMethod" : "ditto.api.CategoryEndpoint.list", 
     "request" : { 
     "body" : "empty" 
     }, 
     "response" : { 
     "body" : "autoTemplate(backendResponse)" 
     } 
    } 
    }, 
    "descriptor" : { 
    "schemas" : { 
     "WireCategory" : { 
     "id" : "WireCategory", 
     "type" : "object", 
     "properties" : { 
      "webSafePath" : { 
      "type" : "string" 
      }, 
      "prettyPath" : { 
      "type" : "string" 
      }, 
      "children" : { 
      "type" : "array", 
      "items" : { 
       "$ref" : "WireCategory" 
      } 
      }, 
      "path" : { 
      "type" : "array", 
      "items" : { 
       "type" : "string" 
      } 
      }, 
      "name" : { 
      "type" : "string" 
      }, 
      "id" : { 
      "type" : "string", 
      "format" : "int64" 
      } 
     } 
     } 
    }, 
    "methods" : { 
     "ditto.api.CategoryEndpoint.list" : { 
     "response" : { 
      "$ref" : "WireCategory" 
     } 
     } 
    } 
    } 
} 

이 URL은 나에게 내 API의 JSON을 기대할 404을 제공합니다 https://eliot-dev-uk-ditto-do.appspot.com/_ah/api/discovery/v1/apis/ditto/v1

이것은 나를 죽입니다!

편집 :

여기에 그냥 앱 엔진 1.7.5과 1.7.6에 의해 생성 된이 .api 파일 사이에 목격 DIFF입니다. URL이 변경된 이유를 잘 모릅니다. 이미 지적한 바와 같이

ditto-v1.api from 1.7.6: 

    { 
     "extends" : "thirdParty.api", 
     "abstract" : false, 
     "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
     "name" : "ditto", 
     "version" : "v1", 
     "defaultVersion" : false, 
     "adapter" : { 
     "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
     "deadline" : 10.0, 
     "type" : "lily" 
     } 
     ... 

    ditto-v1.api from 1.7.5: 

    { 
     "extends" : "thirdParty.api", 
     "abstract" : false, 
     "root" : "https://eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
     "name" : "ditto", 
     "version" : "v1", 
     "defaultVersion" : false, 
     "adapter" : { 
     "bns" : "http://eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
     "deadline" : 10.0, 
     "type" : "lily" 
     } 
     ... 
+0

[1.7.6 SDK] (http://googleappengine.googlecode.com/files) 문제로 생각됩니다. /appengine-java-sdk-1.7.6.zip) 그리고 우리는이 밑바탕에 도달하려고 노력하고 있습니다. [1.7.5 SDK] (http://googleappengine.googlecode.com/files/appengine-java-sdk-1.7.5.zip)와 유사한 문제가 있습니까? – bossylobster

+0

다시 1.7.5로 전환하면 실제로 문제가 해결됩니다. 내 API는 API 탐색기에서 볼 수 있습니다. 위의 질문에 추가 할 App Engine 버전간에 .api 파일의 차이점을 확인했습니다. – Eliot

+1

1.7.7 SDK가 나오기 전까지는 1.7.5 SDK를 사용하거나'.api' 파일에서'root'와'adapter.bns' 값을 수동으로 변경하는 것이 가장 좋은 방법입니다. 불편을 끼쳐 드려 죄송합니다. – bossylobster

답변

2

, 그것은합니다 ...이 .api 파일의 엔드 포인트 루트 URL의 시작 부분에 그 1.을 추가 SDK 1.7.6에서 이상한 문제에 기인

새로운 SDK 1.7.7을 시도했는데 문제가 해결 된 것 같습니다 ...

관련 문제