Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python Flask RESTful

Cara menggunakan Python Flask RESTful

王林
王林ke hadapan
2023-04-29 19:49:121556semak imbas

1. Gambaran keseluruhan gaya RESTful

REST (Representational State Transfer) ialah gaya reka bentuk aplikasi Web berorientasikan sumber Ia mengikut beberapa prinsip reka bentuk untuk menjadikan aplikasi Web sangat mudah dibaca dan mesra pengguna . Mari kita terangkan setiap aspek gaya RESTful secara terperinci:

  • Pengecam Sumber: Dalam gaya RESTful, setiap sumber mempunyai pengecam unik, Biasanya URL(Uniform Resource Locator). URL digunakan untuk mengenal pasti lokasi sumber supaya pelanggan boleh mengaksesnya menggunakan protokol HTTP. Sebagai contoh, URL ringkas boleh menjadi: http://example.com/products/123, dengan “products” mewakili jenis sumber dan “123” mewakili pengecam sumber.

  • Lapisan persembahan : Sumber boleh diwakili dalam format yang berbeza, seperti JSON, XML, HTML, dsb. Pelanggan boleh memilih perwakilan yang sesuai untuk berinteraksi mengikut keperluan. Contohnya, RESTful API boleh mengembalikan data dalam format JSON supaya pelanggan boleh menghuraikan dan memproses data dengan lebih mudah.

  • Mesej yang menerangkan diri : Setiap mesej harus mengandungi maklumat yang mencukupi untuk menerangkan cara mengendalikan mesej. Sebagai contoh, respons HTTP harus mengandungi maklumat seperti kod status, pengepala respons dan badan respons supaya pelanggan dapat memahami maksud respons.

  • Komunikasi Tanpa Kewarganegaraan: Reka bentuk gaya RESTful menekankan komunikasi tanpa kewarganegaraan, yang bermaksud bahawa setiap permintaan harus mengandungi semua maklumat yang diperlukan untuk mengendalikan permintaan itu, tanpa bergantung pada permintaan sebelumnya. Ini boleh menjadikan aplikasi web lebih mudah dan berskala kerana pelayan tidak perlu menyimpan sebarang maklumat keadaan.

  • Antara Muka Seragam : Semua sumber harus diakses melalui antara muka yang sama. Ini bermakna pelanggan boleh menggunakan kaedah HTTP yang sama (seperti GET, POST, PUT, DELETE, dsb.) untuk mengendalikan jenis sumber yang berbeza. Ini menjadikan API lebih mudah dan konsisten serta lebih mudah untuk difahami dan digunakan oleh pembangun lain.

Ringkasnya, reka bentuk gaya RESTful menjadikan aplikasi web lebih fleksibel, berskala dan lebih mudah diselenggara serta merupakan cara moden untuk mereka bentuk aplikasi web.

2. RESTful dalam Python

Python boleh digunakan untuk melaksanakan aplikasi web gaya RESTful, biasanya menggunakan beberapa rangka kerja web untuk memudahkan proses pembangunan. Berikut ialah beberapa rangka kerja web Python biasa:

  • Flask: Flask ialah rangka kerja web yang ringkas dan ringan yang boleh digunakan untuk membina aplikasi web gaya RESTful. Ia menggunakan sintaks penghias Python untuk menentukan laluan HTTP, menjadikan penulisan aplikasi web mudah dan intuitif. Flask juga menyediakan mekanisme sambungan supaya pembangun boleh menambah ciri baharu dengan mudah, seperti akses pangkalan data, pengesahan borang, dsb.

  • Django: Django ialah rangka kerja web yang berkuasa dan komprehensif yang boleh digunakan untuk membina aplikasi web yang kompleks. Ia menyediakan banyak ciri terbina dalam seperti ORM (pemetaan hubungan objek), pengesahan borang, pengesahan, dll. yang membolehkan pembangun membina aplikasi web dengan lebih pantas. Django juga menyokong RESTful pembangunan aplikasi web gaya, yang boleh dilaksanakan menggunakan perpustakaan pihak ketiga Django REST framework .

  • Bottle: Bottle ialah rangka kerja web ringan yang menggunakan sintaks penghias Python untuk menentukan laluan HTTP dan boleh membina aplikasi web gaya RESTful dengan cepat. Botol juga termasuk beberapa ciri berguna seperti enjin templat, akses pangkalan data, pemprosesan fail statik, dsb.

  • Pyramid: Pyramid ialah rangka kerja web yang fleksibel dan boleh disesuaikan yang boleh digunakan untuk membina pelbagai jenis aplikasi web, termasuk aplikasi web gaya RESTful. Pyramid menyediakan banyak mekanisme lanjutan yang membolehkan pembangun menambah fungsi baharu dengan mudah, seperti akses pangkalan data, pengesahan borang, pengesahan, dsb.

Rangka kerja di atas semuanya menyokong pembangunan aplikasi web gaya RESTful, dan semuanya mempunyai kelebihan dan kekurangan mereka sendiri. Pembangun boleh memilih rangka kerja yang sesuai mengikut keperluan mereka sendiri.

3. Penjelasan contoh Flask RESTful API

1) Penjelasan perpustakaan Flask-RESTful

Flask-RESTful ialah perpustakaan sambungan berasaskan Flask yang menyediakan beberapa alatan mudah untuk membina RESTful API. Berikut ialah beberapa ciri dan fungsi utama Flask-RESTful:

  • Kelas Sumber: Flask-RESTful menyediakan kelas asas Sumber yang boleh digunakan untuk mencipta sumber . Kelas Sumber mengandungi logik pemprosesan kaedah HTTP (GET, POST, PUT, DELETE, dsb.) dan menyediakan beberapa kaedah mudah untuk mengendalikan permintaan dan respons.

  • Permintaan penghuraian parameter: Flask-RESTful menyediakan kelas RequestParser untuk menghurai parameter permintaan. RequestParser Boleh menghuraikan secara automatik parameter pertanyaan, parameter bentuk, parameter JSON, dsb. ke dalam jenis Python, dan menyediakan beberapa pilihan untuk menentukan jenis parameter, nilai lalai, mesti wujud dan sekatan lain.

  • Pemformatan respons: Flask-RESTful menyediakan marshal_with() penghias untuk memformat data respons. marshal_with() Penghias boleh menukar objek Python ke dalam format output tertentu (seperti JSON, XML, dll.), dan menyokong fungsi seperti menentukan medan output, jenis medan, medan bersarang, dsb.

  • Takrifan laluan : Flask-RESTful menyediakan kelas Api untuk mentakrifkan hubungan pemetaan antara laluan dan sumber. Kelas Api mengandungi kaedah add_resource(), yang digunakan untuk mengikat kelas sumber dan laluan URL.

  • Pengendalian pengecualian: Flask-RESTful menyediakan beberapa kelas pengecualian untuk mengendalikan ralat dalam permintaan dan respons HTTP. Kelas pengecualian Flask-RESTful termasuk abort, HTTPException, dsb., yang boleh mengendalikan kod status HTTP, mesej ralat, dsb.

Ringkasnya, Flask-RESTful menyediakan beberapa alatan yang mudah untuk memudahkan pembangunan API RESTful. Menggunakan Flask-RESTful, anda boleh dengan cepat mentakrifkan sumber, menghuraikan parameter permintaan, memformat data tindak balas, menentukan laluan, mengendalikan pengecualian, dsb., dengan itu meningkatkan kecekapan pembangunan dan mengurangkan risiko ralat.

2) Pemasangan perpustakaan Flask-RESTful

Untuk memasang perpustakaan Flask-RESTful, anda boleh menggunakan arahan pip untuk memasangnya. Jalankan arahan berikut dalam terminal:

pip3 install flask-restful

Ini akan memuat turun perpustakaan Flask-RESTful daripada PyPI dan memasangnya ke dalam persekitaran Python tempatan anda. Selepas pemasangan selesai, anda boleh mengimport modul flask_restful dalam kod anda dan menggunakan fungsi yang disediakan oleh Flask-RESTful untuk membina API RESTful.

3) Contoh penjelasan RESTful

Berikut ialah contoh Flask RESTful API yang mudah, yang melaksanakan aplikasi Senarai Tugasan yang mudah:

from flask import Flask, request
from flask_restful import Api, Resource, reqparse, fields, marshal_with
app = Flask(__name__)
api = Api(app)
todos = {}
todo_fields = {
    'id': fields.Integer,
    'task': fields.String,
    'status': fields.Boolean
}
class TodoList(Resource):
    @marshal_with(todo_fields)
    def get(self):
        return todos
    @marshal_with(todo_fields)
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str, help='Task is required', required=True)
        args = parser.parse_args()
        todo_id = len(todos) + 1
        todo = {'task': args['task'], 'status': False}
        todos[todo_id] = todo
        return todo, 201
class TodoItem(Resource):
    @marshal_with(todo_fields)
    def get(self, todo_id):
        return todos[todo_id]
    def put(self, todo_id):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str)
        parser.add_argument('status', type=bool)
        args = parser.parse_args()
        todo = todos[todo_id]
        if args['task']:
            todo['task'] = args['task']
        if args['status']:
            todo['status'] = args['status']
        return todo
    def delete(self, todo_id):
        del todos[todo_id]
        return '', 204
api.add_resource(TodoList, '/todos')
api.add_resource(TodoItem, &#39;/todos/<int:todo_id>&#39;)
if __name__ == &#39;__main__&#39;:
    app.run(debug=True)

Mula

# 配置环境变量
export FLASK_APP=restful-test.py
# 启动服务,公开访问需要加上--host=0.0.0.0
python -m flask run --host=0.0.0.0

Contoh ini menggunakan Flask dan perpustakaan Flask-RESTful untuk melaksanakan API RESTful untuk aplikasi Senarai Tugasan. Berikut ialah beberapa coretan kod penting yang dijelaskan:

  • Menentukan sumber : Dalam contoh, terdapat dua sumber: TodoList dan TodoItem. TodoList digunakan untuk memproses semua senarai tugasan Tugasan dan TodoItem digunakan untuk memproses satu tugasan.

  • Tentukan parameter permintaan : Dalam contoh, kami menggunakan RequestParser perpustakaan Flask-RESTful untuk menghuraikan parameter permintaan. Kami mentakrifkan parameter 'task' dan 'status' dan menggunakan kaedah add_argument() untuk menentukan jenisnya dan kekangan lain.

  • Tentukan format respons : Dalam contoh, kami menggunakan marshal_with() penghias perpustakaan Flask-RESTful untuk mentakrifkan format respons. Kami mentakrifkan kamus bernama todo_fields yang mengandungi medan id, task dan status bagi tugasan Tugasan.

  • Tentukan kaedah permintaan: Dalam contoh, kami menggunakan kelas Sumber perpustakaan Flask-RESTful untuk mentakrifkan kaedah permintaan. Kami melaksanakan kaedah GET, POST, PUT dan DELETE untuk mendapatkan senarai tugas, tambah tugas, tugas kemas kini dan Padam tugas.

  • Tambah laluan: Dalam contoh, kami menggunakan kelas Api perpustakaan Flask-RESTful untuk menambah laluan. Kami menggunakan kaedah add_resource() untuk mengikat kelas TodoList dan TodoItem dengan laluan URL yang sepadan.

Selepas menjalankan contoh, anda boleh menggunakan API RESTful aplikasi Senarai Tugasan dengan mengakses URL. Contohnya, untuk mendapatkan senarai semua tugas, anda boleh menggunakan URL berikut:

# GET http://localhost:5000/todos
curl http://localhost:5000/todos

Untuk menambah tugasan baharu, anda boleh menggunakan URL berikut:

# POST http://localhost:5000/todos
curl -XPOST http://localhost:5000/todos -d &#39;task=123&#39;
curl -XPOST http://localhost:5000/todos -d &#39;{"task":"456"}&#39;  --header "Content-Type: application/json"

Untuk mendapatkan satu tugasan, anda boleh menggunakan URL berikut:

# GET http://localhost:5000/todos/1
curl http://localhost:5000/todos/1

Untuk mengemas kini tugasan, anda boleh menggunakan URL berikut :

# PUT http://localhost:5000/todos/1
curl -XPUT http://localhost:5000/todos/1 -d &#39;{"task":"test"}&#39;  --header "Content-Type: application/json"
# 查看
curl http://localhost:5000/todos/1

Untuk memadamkan Untuk tugasan , anda boleh menggunakan URL berikut:

# DELETE http://localhost:5000/todos/1
curl -XDELETE http://localhost:5000/todos/1

Cara menggunakan Python Flask RESTful

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

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam