Код возврата HTTP для GAE ProtoRPC

Как контролировать код состояния HTTP в ответе protoRPC?

Допустим, у меня есть следующий сервис:

class ApiService(remote.Service):

    @remote.method(ApiRequestContextCreate, ApiResponseContextCreate)
    def context_create(self, request):
        cid = helpers.create_context(request.name)
        return ApiResponseContextCreate(cid=cid)

Мне кажется, что в protoRPC API отсутствует семантика: либо запрос может быть выполнен и возвращает 200, либо возникает исключение, приводящее к 404. Конечно, можно создать ответ об ошибке в методе RPC, но это кажется неуклюжим.

Обновление: я обнаружил, что могу поднять ApplicationError за 400.


person jldupont    schedule 27.11.2012    source источник


Ответы (1)


Код состояния HTTP не является частью спецификации ProtoRPC, поскольку ProtoRPC предназначен для поддержки протоколов помимо HTTP. Поэтому он не может иметь коды возврата, специфичные для HTTP. Вместо этого ошибки возвращаются с помощью вызова ApplicationError с использованием поля error_name для указания конкретных условий ошибки приложения.

person Rafe Kaplan    schedule 27.11.2012