0Pricing
Python Academy · Lekcja

Budowanie endpointu REST

Zwracaj odpowiedzi JSON

Budowanie endpointu REST to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest REST API?

REST API udostępnia zasoby za pośrednictwem protokołu HTTP, korzystając ze standardowych metod. Zamiast stron HTML zwraca dane, zwykle w formacie JSON, które mogą być wykorzystywane przez inne programy.

from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')

Zwracanie danych JSON

jsonify() przekształca słownik lub listę Pythona w odpowiedź JSON z prawidłowym typem treści.

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/api/status')
def status():
    return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')

Automatyczna konwersja słowników

Nowoczesny Flask automatycznie konwertuje również zwrócony słownik do formatu JSON, więc często można pominąć jsonify().

from flask import Flask
app = Flask(__name__)

@app.route('/api/ping')
def ping():
    return {'message': 'pong'}
print('Returning a dict yields JSON')

Zwracanie listy

Aby zwrócić kolekcję, przekaż listę do jsonify(). Każdy element jest zwykle słownikiem reprezentującym jeden zasób.

from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]

@app.route('/api/books')
def list_books():
    return jsonify(books)
print('Return a list of resources')

Pobieranie jednego zasobu metodą GET

Użyj dynamicznej części adresu URL, aby pobrać pojedynczy element na podstawie jego identyfikatora. Jeśli element nie istnieje, zwróć kod 404.

from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>')
def get_book(bid):
    book = books.get(bid)
    if book is None:
        return jsonify({'error': 'not found'}), 404
    return jsonify(book)
print('GET /api/books/1')

Tworzenie za pomocą POST

Żądanie POST tworzy zasób. Odczytaj treść JSON, zbuduj nowy element i zwróć go ze statusem 201 Created.

from flask import Flask, request, jsonify
app = Flask(__name__)
books = []

@app.route('/api/books', methods=['POST'])
def create_book():
    data = request.get_json()
    book = {'id': len(books) + 1, 'title': data['title']}
    books.append(book)
    return jsonify(book), 201
print('POST creates and returns 201')

Aktualizowanie za pomocą PUT

PUT zastępuje lub aktualizuje istniejący zasób wskazany przez jego identyfikator.

from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
    if bid not in books:
        return jsonify({'error': 'not found'}), 404
    books[bid]['title'] = request.get_json()['title']
    return jsonify(books[bid])
print('PUT updates a resource')

Usuwanie za pomocą DELETE

DELETE usuwa zasób. W przypadku powodzenia często zwraca się status 204 No Content.

from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
    if bid in books:
        del books[bid]
        return '', 204
    return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')

Kody statusu mają znaczenie

REST opiera się na kodach statusu HTTP: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 404 Not Found.

# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')

Sprawdzanie treści żądania

Przed utworzeniem zasobu sprawdź, czy wymagane pola są obecne. Jeśli treść żądania jest nieprawidłowa, zwróć kod 400 wraz z komunikatem błędu.

from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/api/books', methods=['POST'])
def create_book():
    data = request.get_json(silent=True) or {}
    if 'title' not in data:
        return jsonify({'error': 'title required'}), 400
    return jsonify(data), 201
print('Validate JSON before using it')

Spójne odpowiedzi

Dobre interfejsy API zwracają przewidywalną strukturę, często za każdym razem w ten sam sposób opakowując dane i błędy, dzięki czemu klienci mogą na nich polegać.

from flask import jsonify
# Success: {'data': {...}}
# Error:   {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')

Szybki sprawdzian

Sprawdź swoją wiedzę na temat REST.

Podsumowanie

Nauczył się Pan/Nauczyła się Pani tworzyć punkt końcowy REST zwracający dane JSON.

  • jsonify() (lub zwrócony słownik) tworzy odpowiedzi JSON
  • Przypisuj metody HTTP do operacji: GET odczytuje, POST tworzy, PUT aktualizuje, a DELETE usuwa
  • Zwracaj odpowiednie kody statusu, takie jak 201, 204, 400 i 404
  • Sprawdzaj treść żądania i zachowuj spójność odpowiedzi

Często zadawane pytania

Czy lekcja „Budowanie endpointu REST” jest bezpłatna?

Tak — pełny tekst „Budowanie endpointu REST” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Budowanie endpointu REST”?

Zwracaj odpowiedzi JSON Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Budowanie endpointu REST”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Trasy i widoki
  2. Szablony z Jinja2
  3. Formularze i dane żądań
  4. Budowanie endpointu REST
← Powrót do Python Academy