2015-05-02 2 views
0

облачно-конечные точки.
Я следую Udacity tutorial.ia бит путают с потоком запроса и ответа, ниже мое понимание
Конечная точка должна быть аннотирована @Api, а метод конечной точки аннотируется с помощью @ApiMethod, и эти методы не должны возвращать примитивные типы данных. это один оконечных методпонимание google-cloud-endpoints?

@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 является response.i развертывается в locahost и с помощью ниже URL я испытал
http://localhost:8080/_ah/api/explorer в теле запроса я добавил два параметра, как DISPLAYNAME, teeShirtSize Так может любой, пожалуйста, объясните почему я получаю ответ как 404? ниже изображен снимок экрана
enter image description here
И, насколько мне известно, мне не нужно загружать appengine client.js, потому что я не тестирую на веб-странице. Я тестирую в api-explorer. Пожалуйста, объясните, как генерируется ответ при вызове google-cloud-endpoint?
Thanks

+0

Можете ли вы разместить свой код для ProfileForm? – Eliot

+0

@Eliot благодарит за ваш ответ, и теперь я добавил классы ProfileForm и Profile. – prasad

+0

вы получаете какие-либо журналы на вашем сервере GAE, показывая, что вы на самом деле попали в конечную точку? – jirungaray

ответ

0

Я использовал версию движка google-app версии 1.9.3, после чего я изменил ее на 1.9.20, теперь он работает нормально. Тем не менее, я занимаюсь вопросами, например, почему он не работает в 1.9.3?
Благодаря

0

Вполне вероятно (но не уверен, потому что я не вижу свою @Api аннотации), что он не работает, потому что вы установите параметр корня в аннотации. Были недавние изменения, которые заставляли API-браузер всегда соблюдать корень, который нарушил местный опыт разработки. Последняя версия SDK изменила это, чтобы снова работать. Если вы заметили, ваш скриншот исследователь говорит:

POST https://your-app-id.appspot.com/ _ah/апи/конференции/v1/Профиль

Где он должен сказать:

POST http://localhost:8080/ _ah/api/conference/v1/профиль