Rozdział 22 · Tworzenie stron internetowych z Python

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 trasaAPI-endpoint
Kto czyta odpowiedźMan przez przeglądarkęProgram: JavaScript, aplikacja, inny serwer
Format odpowiedziHTMLNajczęściej JSON
Content-Type odpowiedzitext/htmlapplication/json

Mały punkt końcowy JSON-point na Flask

app.py
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.

Odpowiedź /api/tasks w przeglądarce: tablica obiektów JSON-object z polami done, id i title, cyrylica w title jest pokazana jako sekwencje ucieczki w postaci \u0418
Prawdziwa odpowiedź GET /api/tasks końcowego projektu. To jest poprawna JSON — ale domyślnie jsonify() wymyka się z cyrylicy w \uXXXX-sequence, tak jak opisano w sekcji 22.15 o json.dumps() bez ensure_ascii=False.
REST jest powszechnym stylem, a nie obowiązkowym standardem
Wiele API jest budowanych w stylu REST (Representational State Transfer): ścieżka nazywa zasób (/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.

Praktyka: formatowanie danych dla odpowiedzi API
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →