5

次のように生成されたエンドポイントがあります。

public Book insertBook(Book book) {
    PersistenceManager mgr = getPersistenceManager();
    try {
        if (containsShout(book)) {
            throw new EntityExistsException("Object already exists");
        }
        mgr.makePersistent(book);
    } finally {
        mgr.close();
    }
    return book;
}

クライアントにエラーを返すにはどうすればよいのでしょうか。たとえば、本にはいくつかの必須フィールド、ISNM チェックなどが含まれています。

したがって、例外をスローすると想定しますが、これは返された json 応答にどのようにマップされますか。クライアントでこれらのフィールドを強調表示するには、json 応答にすべてのフィールド エラーを含める必要があります。

4

3 に答える 3

5

一般に、例外は応答で 500 http ステータス コードにマップされます。次の例外を除いて、異なるコードを取得できます: com.google.api.server.spi.response.BadRequestException-> 400 com.google.api.server.spi.response.UnauthorizedException-> 401 com.google.api.server.spi.response.ForbiddenException-> 403 com.google.api.server.spi.response.NotFoundException-> 404

Android でエンドポイントを使用する場合、エラー コードはそこでスローされる IOException にあり、それに応じて catch で対応できます。

于 2013-03-02T18:53:43.300 に答える
0

抽象クラスのエンティティを持つことでこれを行っています。

列挙型であり、文字列の ErrorMessage である ResponseCode があります。

したがって、「Book」はエンティティから継承できます。応答は次のようになります。

public Book insertBook(Book book) {
    PersistenceManager mgr = getPersistenceManager();
    try {
        if (containsShout(book)) {
            book.setResponseCode(ResponseCode.ERROR);
            book.setError("Object already exists");
        } else {
            mgr.makePersistent(book);
        }
    } finally {
        mgr.close();
    }
    return book;
}
于 2013-03-04T15:48:45.363 に答える