cloud-endpoints。
我正在关注Udacity tutorial.ia与请求和响应的流程混淆,下面是我的理解
一个端点应该用@Api
和端点注释方法用@ApiMethod
注释,这些方法不应返回原始数据类型。下面是一个端点方法
@ApiMethod(name = "saveProfile", path = "profile", httpMethod = HttpMethod.POST)
public Profile saveProfile(ProfileForm profileForm) throws UnauthorizedException {
String userId = null;
String mainEmail = null;
String displayName = "Your name will go here";
TeeShirtSize teeShirtSize = TeeShirtSize.NOT_SPECIFIED;
if(profileForm.getTeeShirtSize() != null)
teeShirtSize = profileForm.getTeeShirtSize();
displayName = profileForm.getDisplayName();
Profile profile = new Profile(userId, displayName, mainEmail, teeShirtSize);
return profile;
}
以下是我的ProfileForm和个人资料类
public class ProfileForm {
private String displayName;
private TeeShirtSize teeShirtSize;
private ProfileForm () {}
public ProfileForm(String displayName, TeeShirtSize teeShirtSize) {
this.displayName = displayName;
this.teeShirtSize = teeShirtSize;
}
public String getDisplayName() {
return displayName;
}
public TeeShirtSize getTeeShirtSize() {
return teeShirtSize;
}
public static enum TeeShirtSize {
NOT_SPECIFIED,
XS,
S,
M,
L,
XL,
XXL,
XXXL
}
}
public class Profile {
String displayName;
String mainEmail;
TeeShirtSize teeShirtSize;
String userId;
public Profile (String userId, String displayName, String mainEmail, TeeShirtSize teeShirtSize) {
this.userId = userId;
this.displayName = displayName;
this.mainEmail = mainEmail;
this.teeShirtSize = teeShirtSize;
}
public String getDisplayName() {
return displayName;
}
public String getMainEmail() {
return mainEmail;
}
public TeeShirtSize getTeeShirtSize() {
return teeShirtSize;
}
public String getUserId() {
return userId;
}
private Profile() {}
}
此处ProfileForm
是请求参数,Profile
是在locahost中部署的response.i,并使用下面的网址我已经测试了
http://localhost:8080/_ah/api/explorer
在请求体中我添加了两个参数如displayName,teeShirtSize所以任何人都可以解释为什么我得到的响应为404?以下是截图
根据我的理解,我不需要加载appengine client.js,因为我没有在网页上测试。我在api-explorer中测试。请解释当你调用google-cloud-endpoint时如何生成响应?
谢谢
答案 0 :(得分:0)
我使用了1.9.3版本的谷歌应用程序引擎,然后我改为1.9.20现在它正常工作。我还在问一些问题,比如为什么它在1.9.3中不起作用? 感谢
答案 1 :(得分:0)
由于您在注释中设置了根参数,因此可能(但不确定,因为我没有看到您的@Api
注释)它无效。最近的变化使得API资源管理器始终尊重根本,这打破了本地开发经验。最近的SDK版本对此进行了更改以使其再次运行。如果您注意到,您的资源管理器屏幕截图显示:
发布 https://your-app-id.appspot.com/ _ah / api / conference / v1 / profile
它应该说:
发布 http://localhost:8080/ _ah / api / conference / v1 / profile