了解google-cloud-endpoints?

时间:2015-05-02 06:46:45

标签: java google-app-engine google-cloud-endpoints

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?以下是截图
enter image description here
根据我的理解,我不需要加载appengine client.js,因为我没有在网页上测试。我在api-explorer中测试。请解释当你调用google-cloud-endpoint时如何生成响应?
谢谢

2 个答案:

答案 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