Rumah >pembangunan bahagian belakang >Tutorial Python >Flask-RESTful: Membina API RESTful menggunakan Python

Flask-RESTful: Membina API RESTful menggunakan Python

王林
王林asal
2023-06-17 22:19:382006semak imbas

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

Mula-mula, pasang dan konfigurasikan Flask-RESTful dan cipta persekitaran maya Python. Pasang Flask-RESTful menggunakan arahan berikut (pastikan pip dipasang):

pip install flask-restful

Seterusnya, buat fail app.py. Fail ini mesti mengimport modul dan perpustakaan yang diperlukan. Fail ini akan menentukan dan melaksanakan aplikasi Flask.

from flask import Flask, request
from flask_restful import Resource, Api, reqparse

app = Flask(__name__)
api = Api(app)

Di sini kami memperkenalkan perpustakaan dan modul Flask dan Flask-RESTful. Seterusnya, mari kita tentukan beberapa data palsu.

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}
]

Sekarang, cipta 5 sumber berbeza untuk mengendalikan 5 permintaan HTTP berbeza: DAPATKAN, POS, LETAK, PADAM.

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

Sumber ini dipetakan ke dalam laluan yang dikaitkan dengan URL.

api.add_resource(MovieList, '/movies')
api.add_resource(Movie, '/movies/<int:movie_id>')

Sekarang, lancarkan aplikasi Flask dan semak localhost ( http://127.0.0.1:5000/movies ), kita boleh melihat senarai API yang baru kita buat:

{
"movies": [
    {
      "director": "Frank Darabont", 
      "id": 1, 
      "title": "The Shawshank Redemption", 
      "year_released": 1994
    },
    ...
  ]
}

Sekarang, Kita boleh menambah filem baharu menggunakan kaedah POST.

import requests

url = 'http://localhost:5000/movies'
data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"}
res = requests.post(url, data=data)

Permintaan dan respons lengkap adalah seperti berikut:

<Response [201]>
{'id': 11, 'title': 'The Green Mile', 'director': 'Frank Darabont', 'year_released': 1999}

Kami juga boleh menggunakan kaedah PUT untuk mengemas kini maklumat filem.

url = 'http://localhost:5000/movies/11'
data = {"title": "The Green Mile", "director": "Frank Darabont", "year_released": "1999"}
res = requests.put(url, data=data)

Akhir sekali, mari padamkan filem.

url = 'http://localhost:5000/movies/11'
res = requests.delete(url)

Kami mencipta API RESTful yang mudah menggunakan rangka kerja Flask-RESTful untuk memudahkan pembangunan dan penyelenggaraan. API RESTful ialah komponen penting untuk membangunkan aplikasi web Ia membolehkan pelanggan mengakses dan mengemas kini sumber dan menekankan kaedah URI dan HTTP. Menggunakan Flask-RESTful pada masa yang sama boleh mempercepatkan pembangunan pasukan dan memudahkan kod.

Atas ialah kandungan terperinci Flask-RESTful: Membina API RESTful menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn