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
- Trasy i widoki
- Szablony z Jinja2
- Formularze i dane żądań
- Budowanie endpointu REST