1

私は req パーサーを fields.String 列挙型で使用して、素敵なドロップダウンをスワッガーに表示しようとしています:

seen_search_parser = api.parser()
seen_search_parser.add_argument('page', type=int, default=1, help='Page number')
seen_search_parser.add_argument('max', type=int, default=100, help='Seen entries per page')
seen_search_parser.add_argument('local_seen', type=fields.String(enum=['true', 'false', 'all'], default='all')

@seen_api.route('/')
class SeenSearchAPI(APIResource):
    @api.response(404, 'Page does not exist')
    @api.response(200, 'Successfully retrieved seen objects', seen_search_schema)
    @api.doc(parser=seen_search_parser)
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()

私はexpectラッパーを使用していますが、これはスワッガーでうまく見えます。しかし、リクエストを送信しようとすると、検証エラーが発生します。デバッグすると、メソッドerror: String object is not callableから発生します。reqparse.convert

{
  "errors": {
    "local_seen": "'String' object is not callable"
  },
  "message": "Input payload validation failed"
}

何故ですか?明らかにパラメーターの下に文字列値を送信しています。私は何を間違っていますか?

4

2 に答える 2

0

gitの問題で回答:

忘れていましたが、RequestParser は文字列の列挙も処理できます。

seen_search_parser = api.parser()
seen_search_parser.add_argument('page', type=int, default=1, help='Page number')
seen_search_parser.add_argument('max', type=int, default=100, help='Seen entries per page')
seen_search_parser.add_argument('local_seen', type=str, default='all',
                                choices=('true', 'false', 'all'),
                                help='Filter list by local status.')


class MyResource(Resource):
    @api.expect(seen_search)
    def get(self):
        args = seen_search..parse_args()
        local_seen = args['local_seen']
        if local_seen == 'true':
            # true case
        elif local_seen == 'false':
            # false case
        elif local_seen == 'all':
            # all case
于 2016-01-28T08:23:05.850 に答える