1.5 KiB
When you need to receive form data instead of JSON, you can use Form.
Import Form
Import Form from fastapi:
{!./tutorial/src/form-data/tutorial001.py!}
Define Form parameters
Create form parameters the same way you would for Body:
{!./tutorial/src/form-data/tutorial001.py!}
For example, for one of the ways the OAuth2 specification can be used (called "password flow") it is required to send a username and password fields as form data.
The spec requires the fields to be specifically named username and password, and to be sent as form data, not JSON.
With Form you can declare the same metadata and validation as with Body (and Query, Path, Cookie).
!!! info
Form is a class that inherits directly from Body.
!!! info
To declare form bodies, you need to use Form, because otherwise the parameters would be interpreted as query parameteres or body (JSON) parameters.
"Form Data"?
"Form data" is the way HTML forms (<form></form>) send the data to the server.
!!! note "Technical Details"
Data from forms is normally encoded using the "media type" application/x-www-form-urlencoded. To read more about it head to the MDN web docs for POST.
Recap
Use Form to declare form data input parameters.