2.6. FastAPI GET

  • Resources

  • Query Parameters

2.6.1. SetUp

>>> from fastapi import FastAPI
>>> app = FastAPI()

2.6.2. No Parameters

  • Does define resource (required)

  • /hello

>>> @app.get('/hello')
... def hello():
...     return {'data': 'hello'}
$ curl http://127.0.0.1:8000/hello
{"data":"hello"}

2.6.3. Single Path - One

  • Does define resource (required)

  • /hello/{firstname}

>>> @app.get('/hello/{firstname}')
... def hello(firstname: str):
...     return {'data': firstname}
$ curl http://127.0.0.1:8000/hello/Mark
{"data":"Mark"}

2.6.4. Path Parameter - Many

  • Does define resource (required)

  • /hello/{firstname}-{lastname}

>>> @app.get('/hello/{firstname}-{lastname}')
... def hello(firstname: str, lastname: str):
...     return {'data': f'{firstname} {lastname}'}
$ curl http://127.0.0.1:8000/hello/Mark-Watney
{"data":"Mark Watney"}

2.6.5. Query Parameter

  • Does not require a name in URL resource, but requires a parameter

  • /hello

>>> @app.get('/hello')
... def hello(firstname: str):
...     return {'data': firstname}
$ curl http://127.0.0.1:8000/hello?firstname=Mark
{"data":"Mark"}

2.6.6. Multiple Parameters

  • Does not require a name in URL resource, but requires a parameter

  • /hello

>>> @app.get('/hello')
... def hello(firstname: str, lastname: str):
...     return {'data': f'{firstname} {lastname}'}
$ curl http://127.0.0.1:8000/hello?firstname=Mark&lastname=Watney
{"data":"Mark Watney"}

2.6.7. Default Values

>>> @app.get('/hello')
... def hello(firstname: str, lastname: str, age: int = 42):
...     return {'data': f'{firstname} {lastname} is {age} years old'}
$ curl http://127.0.0.1:8000/hello/?firstname=Mark&lastname=Watney
{"data":"Mark Watney is 42 years old"}
$ curl http://127.0.0.1:8000/hello/?firstname=Mark&lastname=Watney&age=69
{"data":"Mark Watney is 69 years old"}

2.6.8. Optional

>>> @app.get('/hello/')
... def hello(firstname: str, lastname: str, age: int | None = None):
...     return {'data': f'{firstname} {lastname} is {age} years old'}
$ curl http://127.0.0.1:8000/hello/?firstname=Mark&lastname=Watney
{"data":"Mark Watney is None years old"}
$ curl http://127.0.0.1:8000/hello/?firstname=Mark&lastname=Watney&age=69
{"data":"Mark Watney is 69 years old"}