lea*_*ner 9 java google-app-engine gae-eclipse-plugin google-cloud-endpoints
使用Google Appengine Eclipse插件生成端点时,我遇到了一种奇怪的行为.我有一个端点类,有超过20个端点方法.当我第一次尝试为android生成端点时,我得到了错误
Generating Cloud Endpoint has encountered errors and is not complete
Run Code Online (Sandbox Code Playgroud)
通过故障排除,我注释掉所有找到罪魁祸首的方法.我发现有点莫名其妙.取消注释第16个方法后,我再次收到错误.有两种方法相互干扰!如果我注释掉一个或另一个端点生成正常.但如果我同时取消注释,我会得到上面的错误.
有谁知道可能导致这种干扰的原因是什么?
@ApiMethod(name = "getOrangers", httpMethod = HttpMethod.POST)
public FaceList getOrangers(UserRequest request) throws NotFoundException {
FaceList list = new FaceList();
return list;
}
@ApiMethod(name = "getMangoers", httpMethod = HttpMethod.POST)
public FaceList getMangoers(UserRequest request) throws NotFoundException {
FaceList list = new FaceList();
return list;
}
Run Code Online (Sandbox Code Playgroud)
我已经将方法编辑到它们的存根,如上所示,仍然会遇到相同的干扰问题.
Mik*_*ikO 34
首先,当您收到有关令人讨厌的不良消息的错误时:
生成Cloud Endpoint遇到错误但未完成
你应该检查错误日志下Window -> Show View -> Error Log获得更多的信息.
我这样做了,我发现实际的例外是:
java.lang.IllegalArgumentException:
Multiple methods with same rest path "POST facelist": "getOrangers" and "getMangoers"
Run Code Online (Sandbox Code Playgroud)
所以,问题是你的2种方法有相同的路径!明确添加方法的路径将解决问题:
@ApiMethod(name="getOrangers", path="get_oranges", httpMethod=HttpMethod.POST)
public FaceList getOrangers(UserRequest request) throws NotFoundException {
//...
}
@ApiMethod(name="getMangoers", path="get_mangoers", httpMethod=HttpMethod.POST)
public FaceList getMangoers(UserRequest request) throws NotFoundException {
//...
}
Run Code Online (Sandbox Code Playgroud)
注意:由于您没有为方法设置路径,因此GPE会自动生成它们.似乎GPE为这两种方法生成相同的路径,用于形成HTTP方法(POST)和返回值(facelist)的路径,这与Google Cloud Endpoints文档中的内容不一致:
" path:用于访问此方法的URI路径.如果未设置此值,则根据Java 方法名称使用默认路径. "
它表示使用方法名称自动生成路径,在这种情况下,您不会收到任何错误,因为您的2种方法明显有不同的名称.所以我想它必定是端点中的一个bug(和许多其他人一样).
| 归档时间: |
|
| 查看次数: |
2377 次 |
| 最近记录: |