이것은 (유효한 경우) 엔드 포인트의 다음 버그로 인해 발생하는 것으로 의심되지만 어딘가에 해결 방법이 있다고 확신합니다.배포시 내 API가 표시되지 않는 이유는 무엇입니까?
단계 재현 :
- 변경하는 방법 이름, 메소드의 API 이름 또는 매개 변수 목록을 엔드 포인트 클래스.
- endpoints.sh 스크립트를 실행하여 API 파일을 생성하십시오.
- API 파일을 로컬에서 검사하고 변경 사항을 확인하십시오. 여태까지는 그런대로 잘됐다.
- 서버의 기본 앱 버전으로 배포합니다.
- 로그에서 /_ah/spi/BackendService.getApiConfigs에 대한 호출을 확인하십시오. 오류가 없습니다!
- API 탐색기로 이동하여 브라우저 캐시를 지우십시오. API를 검사하십시오. 변화가 없습니다.
- 예 : 브라우저에서 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"
}
...
[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
다시 1.7.5로 전환하면 실제로 문제가 해결됩니다. 내 API는 API 탐색기에서 볼 수 있습니다. 위의 질문에 추가 할 App Engine 버전간에 .api 파일의 차이점을 확인했습니다. – Eliot
1.7.7 SDK가 나오기 전까지는 1.7.5 SDK를 사용하거나'.api' 파일에서'root'와'adapter.bns' 값을 수동으로 변경하는 것이 가장 좋은 방법입니다. 불편을 끼쳐 드려 죄송합니다. – bossylobster