2

API に送信されるすべてのデータを検証しようとしています。私の URL 構造には、/api/v2/users/<string:username>/collections/実際のクエリ文字列パラメーターだけでなく、その中に変数が含まれており、これらはすべて検証を通過する必要があります。

完全な URL は次のようになります。 https://127.0.0.1:5000/api/v2/users/<string:username>/collections/?page=5&per_page=10

検証する必要がある 2 つの変数はusername page、 、およびper_pageです。簡単な解決策は URL 構造を変更することですが、リソース クラス内に追加の検証を追加せずに、必要なことを達成し、現在の単純さを維持できるかどうか疑問に思っています。可能であれば、どのようにしますか?

class UserCollections(Resource):
    @use_args({
        'username': fields.Str(
            required=True,
            validate=username_length,
            error_messages=dict(
                required='Username is required.',
                validator_failed='Username can be between 3 and 25 characters.',
            )
        ),
        'page': fields.Int(
            #required=True,
            missing=1,
            validate=feed_minmax_pages,
            error_messages=dict(
                validator_failed='Maximum number of pages reached.',
            )
        ),
        'per_page': fields.Int(
            #required=True,
            missing=5,
            validate=validate.Range(min=5,max=25),
            error_messages=dict(
                validator_failed='Test number of pages reached.',
            )
        ),
    }, locations=('query',))

    def get(self, args, username):
        print(args)
        print(username)

        return default_schema(
            data={},
            http_status=200
        )

usernameコードを実行すると、引数に存在しないため、検証エラーが発生します。

4

1 に答える 1