Flask-RESTful: Gunakan Python untuk membina RESTful API
Dengan peningkatan perkhidmatan Internet moden, RESTful API telah menjadi standard untuk protokol komunikasi. Untuk membangunkan API RESTful berkualiti tinggi, Python mempunyai rangka kerja yang cekap, Flask-RESTful. Artikel ini akan memperkenalkan apa itu Flask-RESTful dan cara membina API RESTful menggunakan Python.
Bahagian 1: Memahami RESTful API
REST (Pemindahan Negeri Perwakilan) ialah gaya seni bina perkhidmatan web berdasarkan protokol HTTP Ia membolehkan pelanggan meminta akses dan mendapatkan sumber, dan membenarkan pelayan kembali Sumber yang diminta. API (Application Programming Interface) ialah protokol komunikasi antara program dan sistem, yang membolehkan aplikasi berbeza berkomunikasi antara satu sama lain melalui antara muka yang ditentukan untuk menyelesaikan tugasan tertentu. API RESTful terdiri daripada dua bahagian: sumber (URI) dan gelagat (kaedah HTTP).
Sumber ialah teras API RESTful, yang merupakan perwakilan data dalaman. URI (Uniform Resource Identifier) menentukan lokasi setiap sumber dan setiap sumber mempunyai URI unik. Gelagat, sebaliknya, menentukan cara sumber diakses dan dimanipulasi. API RESTful menggunakan kaedah HTTP untuk mentakrifkan operasi ini, contohnya, kaedah GET digunakan untuk mendapatkan semula sumber, kaedah POST digunakan untuk mencipta sumber, kaedah PUT digunakan untuk mengemas kini sumber dan kaedah DELETE digunakan untuk memadam sumber.
Bahagian 2: Pengenalan kepada Flask-RESTful
Flask-RESTful ialah modul lanjutan Flask dan rangka kerja Python RESTful. Ia menyediakan kaedah dan alatan yang dipermudahkan untuk membina API RESTful. Kelebihan Flask-RESTful adalah seperti berikut:
1 Mudah digunakan
Flask-RESTful ialah rangka kerja ringan berdasarkan rangka kerja Flask. Ia menyediakan set alat mudah yang boleh membantu pembangun membina API RESTful dengan cepat tanpa menulis banyak kod berulang.
2. Pembangunan pantas
Disebabkan beberapa kaedah yang dipermudahkan, seperti penghuraian parameter permintaan dan penciptaan laluan, masa pembangunan API boleh dikurangkan dengan ketara.
3. Menyediakan sokongan untuk sambungan dan penyesuaian
Flask-RESTful menyediakan titik sambungan dan penyesuaian yang fleksibel, dan pembangun boleh melanjutkan fungsinya mengikut keperluan.
4. Dokumentasinya sangat terperinci
Dokumentasi Flask-RESTful sangat terperinci dan mudah dipelajari dan digunakan.
Bahagian 3: Cara menggunakan Flask-RESTful
Seterusnya, kami akan memperkenalkan cara menggunakan Flask-RESTful untuk membina API RESTful. Kami akan mencipta API mudah untuk mengurus data filem. API ini akan membolehkan pelanggan melakukan operasi berikut:
1 Senaraikan semua filem
2 Dapatkan maklumat terperinci tentang filem
3. Kemas kini maklumat filem
5. Padamkan rekod filem
pip install flask-restful
from flask import Flask, request from flask_restful import Resource, Api, reqparse app = Flask(__name__) api = Api(app)
movies = [ { 'id': 1, 'title': 'The Shawshank Redemption', 'director': 'Frank Darabont', 'year_released': 1994}, { 'id': 2, 'title': 'Forrest Gump', 'director': 'Robert Zemeckis', 'year_released': 1994}, { 'id': 3, 'title': 'The Matrix', 'director': 'The Wachowski Brothers', 'year_released': 1999}, { 'id': 4, 'title': 'Léon: The Professional', 'director': 'Luc Besson', 'year_released': 1994}, { 'id': 5, 'title': 'The Dark Knight', 'director': 'Christopher Nolan', 'year_released': 2008}, { 'id': 6, 'title': 'Interstellar', 'director': 'Christopher Nolan', 'year_released': 2014}, { 'id': 7, 'title': 'Inception', 'director': 'Christopher Nolan', 'year_released': 2010}, { 'id': 8, 'title': 'The Lord of the Rings: The Fellowship of the Ring', 'director': 'Peter Jackson', 'year_released': 2001}, { 'id': 9, 'title': 'Gladiator', 'director': 'Ridley Scott', 'year_released': 2000}, { 'id': 10, 'title': 'The Godfather', 'director': 'Francis Ford Coppola', 'year_released': 1972} ]
class MovieList(Resource): def get(self): return { 'movies': movies } def post(self): parser = reqparse.RequestParser() parser.add_argument('title', type=str, required=True, help='Title is required.') parser.add_argument('director', type=str, required=True, help='Director is required.') parser.add_argument('year_released', type=int, required=True, help='Year must be a number.') args = parser.parse_args() movie = { 'id': len(movies) + 1, 'title': args['title'], 'director': args['director'], 'year_released': args['year_released'] } movies.append(movie) return movie, 201 class Movie(Resource): def get(self, movie_id): movie = next(filter(lambda x:x['id']==movie_id, movies), None) return {'movie': movie}, 200 if movie else 404 def put(self, movie_id): parser = reqparse.RequestParser() parser.add_argument('title', type=str, required=True, help='Title is required.') parser.add_argument('director', type=str, required=True, help='Director is required.') parser.add_argument('year_released', type=int, required=True, help='Year must be a number.') args = parser.parse_args() movie = next(filter(lambda x:x['id']==movie_id, movies), None) if movie is None: movie = {'id': movie_id, 'title': args['title'], 'director': args['director'], 'year_released': args['year_released']} movies.append(movie) else: movie.update(args) return movie def delete(self, movie_id): global movies movies = list(filter(lambda x:x['id']!=movie_id, movies)) return {'message': 'Movie deleted.'}, 200
api.add_resource(MovieList, '/movies') api.add_resource(Movie, '/movies/<int:movie_id>')
{ "movies": [ { "director": "Frank Darabont", "id": 1, "title": "The Shawshank Redemption", "year_released": 1994 }, ... ] }
import requests url = 'http://localhost:5000/movies' data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"} res = requests.post(url, data=data)
<Response [201]> {'id': 11, 'title': 'The Green Mile', 'director': 'Frank Darabont', 'year_released': 1999}
url = 'http://localhost:5000/movies/11' data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"} res = requests.put(url, data=data)
url = 'http://localhost:5000/movies/11' res = requests.delete(url)
Atas ialah kandungan terperinci Flask-RESTful: Membina API RESTful menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!