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
コードを実行すると、引数に存在しないため、検証エラーが発生します。