REST-päätepisteen rakentaminen
Palauta JSON-vastauksia
REST-päätepisteen rakentaminen on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mikä REST API on
REST API tarjoaa resursseja HTTP:n kautta vakiometodeja käyttäen. HTML-sivujen sijaan se palauttaa yleensä JSON-muotoisia tietoja muiden ohjelmien hyödynnettäviksi.
from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')JSON-tietojen palauttaminen
jsonify() muuntaa Python-sanakirjan tai -luettelon JSON-vastaukseksi, jonka sisältötyyppi on oikea.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/status')
def status():
return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')Sanakirjojen automaattinen muunnos
Moderni Flask muuntaa palautetun sanakirjan myös automaattisesti JSON-muotoon, joten voitte usein jättää jsonify()-funktion pois.
from flask import Flask
app = Flask(__name__)
@app.route('/api/ping')
def ping():
return {'message': 'pong'}
print('Returning a dict yields JSON')Luettelon palauttaminen
Palauttaaksenne kokoelman välittäkää luettelo jsonify()-funktiolle. Jokainen alkio on yleensä yksittäistä resurssia edustava sanakirja.
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')Yhden resurssin hakeminen GET-pyynnöllä
Hakekaa yksittäinen kohde tunnisteen perusteella käyttämällä dynaamista URL-osaa. Palauttakaa 404, jos kohdetta ei ole olemassa.
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')Luominen POST-pyynnöllä
POST-pyyntö luo resurssin. Lukekaa JSON-runko, muodostakaa uusi kohde ja palauttakaa se tilalla 201 (luotu).
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')Päivittäminen PUT-pyynnöllä
PUT korvaa tai päivittää olemassa olevan resurssin, joka yksilöidään tunnisteen perusteella.
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')Poistaminen DELETE-pyynnöllä
DELETE poistaa resurssin. Onnistuneen pyynnön yhteydessä palautetaan usein tila 204 (ei sisältöä).
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')Tilakoodeilla on merkitystä
REST perustuu HTTP-tilakoodeihin: 200 OK, 201 luotu, 204 ei sisältöä, 400 virheellinen pyyntö ja 404 ei löydy.
# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')Rungon tarkistaminen
Tarkistakaa ennen luomista, että pakolliset kentät ovat mukana. Palauttakaa 400 ja virheilmoitus, jos runko ei ole kelvollinen.
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')Yhdenmukaiset vastaukset
Hyvät API:t palauttavat ennakoitavassa muodossa olevia vastauksia. Tiedot ja virheet kääritään usein samalla tavalla joka kerta, jotta asiakkaat voivat luottaa rakenteeseen.
from flask import jsonify
# Success: {'data': {...}}
# Error: {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')Pikatarkistus
Testatkaa REST-osaamistanne.
Kertaus
Rakensitte JSON-muotoisen REST-päätepisteen.
jsonify()(tai palautettu sanakirja) tuottaa JSON-vastauksia- Yhdistäkää HTTP-metodit käyttötarkoituksiin: GET lukee, POST luo, PUT päivittää ja DELETE poistaa
- Palauttakaa tarkoituksenmukaisia tilakoodeja, kuten 201, 204, 400 ja 404
- Tarkistakaa pyynnön runko ja pitäkää vastaukset yhdenmukaisina
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”REST-päätepisteen rakentaminen” ilmainen?
Kyllä – oppitunnin ”REST-päätepisteen rakentaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”REST-päätepisteen rakentaminen”?
Palauta JSON-vastauksia Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”REST-päätepisteen rakentaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Reitit ja näkymät
- Templatet Jinja2:lla
- Lomakkeet ja pyyntötiedot
- REST-päätepisteen rakentaminen