4
我懷疑這是由端點中的以下錯誤(如果有效)引起的,但我也確定在某處有一個解決方法。爲什麼我的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 Explorer中的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給了我404,我希望看到我的API JSON:
https://eliot-dev-uk-ditto-do.appspot.com/_ah/api/discovery/v1/apis/ditto/v1
這是在殺我!
編輯:
這是我剛剛發現通過App Engine的1.7.5和1.7.6中產生的.api文件之間的差異。不知道爲什麼網址已經改變。
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 2013-03-27 22:58:47
切換回1.7.5確實可以解決問題。我可以在API資源管理器中看到我的API。也注意到App引擎版本中.api文件中的差異,我將在上面的問題中添加該差異。 – Eliot 2013-03-28 10:14:53
似乎最好的解決方法是使用1.7.5 SDK,直到1.7.7 SDK發佈或手動更改'.api'文件中的'root'和'adapter.bns'值。抱歉給您帶來不便。 – bossylobster 2013-03-28 15:39:18