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.
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.
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.
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.
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, '/todos/<int:todo_id>') if __name__ == '__main__': 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 'task=123' curl -XPOST http://localhost:5000/todos -d '{"task":"456"}' --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 '{"task":"test"}' --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
Atas ialah kandungan terperinci Cara menggunakan Python Flask RESTful. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!