@@ -264,7 +264,7 @@ impl Request {
264
264
for < ' de > T : Deserialize < ' de > ,
265
265
{
266
266
let query = self . uri ( ) . query ( ) . unwrap_or ( "" ) ;
267
- let params = serde_urlencoded :: from_str ( query) ?;
267
+ let params = serde_html_form :: from_str ( query) ?;
268
268
Ok ( params)
269
269
}
270
270
@@ -357,7 +357,7 @@ impl Request {
357
357
match content_type. subtype ( ) {
358
358
mime:: WWW_FORM_URLENCODED => {
359
359
let bytes = body. collect ( ) . await . unwrap ( ) . to_bytes ( ) ;
360
- serde_urlencoded :: from_bytes ( & bytes) . map_err ( SilentError :: from)
360
+ serde_html_form :: from_bytes ( & bytes) . map_err ( SilentError :: from)
361
361
}
362
362
mime:: JSON => {
363
363
let bytes = body. collect ( ) . await . unwrap ( ) . to_bytes ( ) ;
@@ -371,7 +371,7 @@ impl Request {
371
371
}
372
372
ReqBody :: Once ( bytes) => match content_type. subtype ( ) {
373
373
mime:: WWW_FORM_URLENCODED => {
374
- serde_urlencoded :: from_bytes ( & bytes) . map_err ( SilentError :: from)
374
+ serde_html_form :: from_bytes ( & bytes) . map_err ( SilentError :: from)
375
375
}
376
376
mime:: JSON => serde_json:: from_slice ( & bytes) . map_err ( |e| e. into ( ) ) ,
377
377
_ => Err ( SilentError :: JsonEmpty ) ,
@@ -413,3 +413,30 @@ impl Request {
413
413
( self , url)
414
414
}
415
415
}
416
+
417
+ #[ cfg( test) ]
418
+ mod tests {
419
+ use super :: * ;
420
+
421
+ #[ derive( Deserialize , Debug , PartialEq ) ]
422
+ struct TestStruct {
423
+ a : i32 ,
424
+ b : String ,
425
+ #[ serde( default , alias = "c[]" ) ]
426
+ c : Vec < String > ,
427
+ }
428
+
429
+ #[ test]
430
+ fn test_query_parse_alias ( ) {
431
+ let mut req = Request :: empty ( ) ;
432
+ * req. uri_mut ( ) = Uri :: from_static ( "http://localhost:8080/test?a=1&b=2&c[]=3&c[]=4" ) ;
433
+ let _ = req. params_parse :: < TestStruct > ( ) . unwrap ( ) ;
434
+ }
435
+
436
+ #[ test]
437
+ fn test_query_parse ( ) {
438
+ let mut req = Request :: empty ( ) ;
439
+ * req. uri_mut ( ) = Uri :: from_static ( "http://localhost:8080/test?a=1&b=2&c=3&c=4" ) ;
440
+ let _ = req. params_parse :: < TestStruct > ( ) . unwrap ( ) ;
441
+ }
442
+ }
0 commit comments