30

protorpcエンドポイントを使用すると、奇妙なエラーが発生します。このコードでは:

class Application(EndpointsModel):

    _message_fields_schema = ('id', 'name')

    created = ndb.DateTimeProperty(auto_now_add=True)
    name = ndb.StringProperty()
    roles = ndb.IntegerProperty(repeated=True)
    updated = ndb.DateTimeProperty(auto_now=True)
    owner = ndb.KeyProperty(kind='User')

@API.api_class(resource_name="application")
class ApplicationApi(protorpc.remote.Service):

    @Application.method(http_method="GET",
                        request_fields=('id',),
                        name="get",
                        path="applications/{id}")
    def ApplicationGet(self, instance):
        if not instance.from_datastore:
            raise endpoints.NotFoundException("Application not found.")
        return instance

    @Application.query_method(http_method="GET",
                              query_fields=('limit', 'order', 'pageToken'),
                              name="list",
                              path="applications")
    def ApplicationList(self, query):
        return query

application.get()エラーを呼び出すと、次のようになります: (完全なトレースはこちら):

TypeError: 正確なタイプ Application のエンティティからのみコピーできます。アプリケーションのインスタンスを受け取りました。

application.list()エラーを呼び出す場合は次のとおりです: (完全なトレースはこちら):

ValidationError:<class '.Application'>フィールド アイテムの予想される型が見つかりました<Application name: u'test'>(type <class '.Application'>)

何が原因でしょうか? ほぼ同じコード (プロパティが異なるだけ) を持つ私の他のモデルは正常に動作します。

4

1 に答える 1

1

サブクラス化class JsonModel(EndpointsModel)して、再び機能するようにします。

于 2018-01-01T20:59:01.917 に答える