You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+19-9Lines changed: 19 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ if __name__ == "__main__":
38
38
## Usage
39
39
To validate parameters with flask-parameter-validation, two conditions must be met.
40
40
1. The `@ValidateParameters()` decorator must be applied to the function
41
-
2. Type hints ([supported types](#type-hints-and-accepted-input-types)) and a default of a subclass of `Parameter`for the parameters you want to use flask-parameter-validation on
41
+
2. Type hints ([supported types](#type-hints-and-accepted-input-types)) and a default of a subclass of `Parameter`must be supplied per parameter flask-parameter-validation parameter
42
42
43
43
44
44
### Enable and customize Validation for a Route with the @ValidateParameters decorator
@@ -49,7 +49,14 @@ The `@ValidateParameters()` decorator takes parameters that alter route validati
49
49
| error_handler |`Optional[Response]`|`None`| Overwrite the output format of generated errors, see [Overwriting Default Errors](#overwriting-default-errors) for more |
50
50
51
51
#### Overwriting Default Errors
52
-
By default, the error messages are returned as a JSON response, with the detailed error in the "error" field. However, this can be edited by passing a custom error function into the `ValidateParameters()` decorator. For example:
52
+
By default, the error messages are returned as a JSON response, with the detailed error in the "error" field, eg:
53
+
```json
54
+
{
55
+
"error": "Parameter 'age' must be type 'int'"
56
+
}
57
+
```
58
+
59
+
However, this can be edited by passing a custom error function into the `ValidateParameters()` decorator. For example:
53
60
```py
54
61
deferror_handler(err):
55
62
error_name =type(err)
@@ -70,15 +77,17 @@ def api(...)
70
77
#### Parameter Class
71
78
The `Parameter` class provides a base for validation common among all input types, all location-specific classes extend `Parameter`. These subclasses are:
| Route | Parameter passed in the pathname of the URL, such as `/users/<int:id>`| All HTTP Methods |
83
+
| Form | Parameter in an HTML form or a `FormData` object in the request body, often with `Content-Type: x-www-form-urlencoded`| POST Methods |
84
+
| Json | Parameter in the JSON object in the request body, must have header `Content-Type: application/json`| POST Methods|
85
+
| Query | Parameter in the query of the URL, such as /news_article?id=55 | All HTTP Methods |
86
+
| File | Parameter is a file uploaded in the request body | POST Method |
80
87
| MultiSource | Parameter is in one of the locations provided to the constructor | Dependent on selected locations |
81
88
89
+
Note: "**POST Methods**" refers to the HTTP methods that send data in the request body, such as POST, PUT, PATCH and DELETE. Although sending data via some methods such as DELETE is not standard, it is supported by Flask and this library.
90
+
82
91
##### MultiSource Parameters
83
92
Using the `MultiSource` parameter type, parameters can be accepted from any combination of `Parameter` subclasses. Example usage is as follows:
84
93
@@ -93,6 +102,7 @@ def multi_source_example(
93
102
94
103
The above example will accept parameters passed to the route through Route, Query, and JSON Body.
95
104
105
+
96
106
#### Type Hints and Accepted Input Types
97
107
Type Hints allow for inline specification of the input type of a parameter. Some types are only available to certain `Parameter` subclasses.
0 commit comments