@@ -38,6 +38,11 @@ class BookQuery(BaseModel):
3838 book_type : Optional [TypeEnum ] = None
3939
4040
41+ class BookQueryFilter (BaseModel ):
42+ age : list [int ]
43+ fields : Optional [list [str ]] = None
44+
45+
4146class BookBody (BaseModel ):
4247 age : int
4348
@@ -71,6 +76,13 @@ def api_query(query: BookQuery):
7176 return {"code" : 0 , "message" : "ok" }
7277
7378
79+ @app .get ("/filter-query" )
80+ @decorator
81+ def api_filter_query (query : BookQueryFilter ):
82+ print (query )
83+ return {"fields" : query .fields , "message" : "ok" }
84+
85+
7486@app .post ("/form" )
7587def api_form (form : BookForm ):
7688 print (form )
@@ -111,6 +123,27 @@ def test_query(client):
111123 assert r .status_code == 200
112124
113125
126+ def test_query_list (client ):
127+ r = client .get ("/filter-query?age=1&fields=name&fields=age" )
128+ print (r .json )
129+ assert r .status_code == 200
130+ assert r .json ["fields" ] == ["name" , "age" ]
131+
132+
133+ def test_query_list_no_fields (client ):
134+ r = client .get ("/filter-query?age=1" )
135+ print (r .json )
136+ assert r .status_code == 200
137+ assert r .json ["fields" ] is None
138+
139+
140+ def test_query_list_single_field (client ):
141+ r = client .get ("/filter-query?age=1&fields=age" )
142+ print (r .json )
143+ assert r .status_code == 200
144+ assert r .json ["fields" ] == ["age" ]
145+
146+
114147def test_form (client ):
115148 from io import BytesIO
116149
0 commit comments