HTTP API: wymiana danych między programami
Ten sam serwer, ten sam Flask — ale odbiorca odpowiedzi to teraz inny program, a nie przeglądarka użytkownika.
Do tej pory aplikacja Flask- odpowiadała HTML- stronami — są one czytane przez przeglądarkę.
Ale odpowiedź serwera może mieć też innego odbiorcę: aplikację mobilną, inny serwer
lub JavaScript-code na tej samej stronie (sekcja 22.4 już pokazywała
fetch()). Taka odpowiedź zwykle nie pojawia się w postaci HTML, lecz w postaci
Typ danych – najczęściej JSON.
Interfejs programowy, przez który jeden program odbiera dane od innego, nazywa się
API (Application Programming Interface — interfejs programowy
załączniki). Konkretny adres w obrębie API nazywany jest również punkt końcowy jest
szersze, bardziej powszechne znaczenie słowa niż nazwa końcowa trasy Flask z
Rozdział 22.11: Dotyczyła wewnętrznego identyfikatora dla url_for()
, tutaj — po prostu o konkretnym URL, który zwraca dane, a nie HTML- stronę.
| Regularna trasa | API-endpoint | |
|---|---|---|
| Kto czyta odpowiedź | Man przez przeglądarkę | Program: JavaScript, aplikacja, inny serwer |
| Format odpowiedzi | HTML | Najczęściej JSON |
| Content-Type odpowiedzi | text/html | application/json |
Mały punkt końcowy JSON-point na Flask
from flask import jsonify
@app.route("/api/tasks")
def api_tasks():
return jsonify([{{"id": z["id"], "title": z["title"], "done": z["done"]}} for z in zadachi])
jsonify(...) robi dwie rzeczy jednocześnie: zamienia dane
Python w tekst JSON (jak json.dumps() w sekcji 22.15), oraz
Ustala tytuł odpowiedzi Content-Type: application/json,
aby odbiorca wiedział, jak odczytać treść odpowiedzi.
/api/tasks), a metoda określa akcję na niej — GET otrzymuje lista POST tworzy nowy rekord. To popularna i użyteczna konwencja, ale nie jedyny możliwy sposób na budowanie API — ważne jest, aby zrozumieć zasadę „danych zamiast HTML”Rozdział 22.35 doda taki endpoint do projektu końcowego — GET /api/tasks, zwracający bieżące lista zadań w formacie JSON.