# Общие команды

**Установка**

```bash
pip install fastapi uvicorn
```

**Ручной запуск** (api - имя файла, app - имя объекта FastApi)

```bash
uvicorn api:app --port 8000 --reload
```

**Запуск uvicorn из python скрипта**

Файл main.py

```python
from fastapi import FastAPI
from uvicorn import run
...
app = FastAPI()
...
if __name__ == '__main__':
    run(app="main:app", host='0.0.0.0', port=8000, workers=4, log_level='warning')
    #run(app="main:app", host='0.0.0.0', port=8000, reload=True)
```

**Запросы**

**curl запросы**

```bash
curl -X 'GET' 'http://127.0.0.1:8000/todo' -H 'accept: application/json' 
```

```bash
curl -X 'POST' \ 
'http://127.0.0.1:8000/todo' \ 
-H 'accept: application/json' \ 
-H 'Content-Type: application/json' \ 
-d '{ 
"id": 1, 
"item": "First Todo is to finish this book!" 
}'
```

**Requests**

```python
import requests
r = requests.get("http://localhost:8000/hi")
print(r.json())
```

Передача параметров

```
params = {"who": "Mom"}
r = requests.get("http://localhost:8000/hi", params=params)
```

**Httpx**

```
import httpx
r = httpx.get("http://localhost:8000/hi")
print(r.json())
```

**Автоматическая документация**

**Swagger**

```html
http://ip:port/docs
```

**Redoc**

```html
http://ip:port/redoc
```

**Шаблоны Jinja**

Поддерживает шаблоны Jinja при выводе данных (вплоть до циклов).