


Cara Membuat API RESTful dengan Flask dan Python
API RESTful adalah penting dalam pembangunan moden, membolehkan sistem yang berbeza berkomunikasi dengan cara yang cekap dan berskala. Python, dengan rangka kerja Flasknya, menawarkan pendekatan yang mudah dan berkuasa untuk mencipta API. Dalam panduan ini, kami akan meneroka cara membuat API RESTful menggunakan Flask, meliputi segala-galanya daripada asas kepada pengesahan dan penggunaan dengan klien HTTP.
Apakah itu API RESTful?
Sebelum kita mula dengan kod, adalah penting untuk memahami apa itu RESTful API. API (Application Programming Interface) ialah satu set peraturan yang membenarkan satu perisian untuk berkomunikasi dengan yang lain. Gaya REST (Pemindahan Negeri Perwakilan) mentakrifkan satu set prinsip yang mesti dipatuhi oleh API:
- Pelayan-Pelanggan: Pemisahan antara pelanggan (yang menggunakan API) dan pelayan (yang menyediakan data).
- Stateless: Setiap permintaan yang dibuat oleh pelanggan mesti mengandungi semua maklumat yang diperlukan untuk pelayan memproses.
- Boleh Cache: Respons API boleh dicache untuk meningkatkan prestasi.
- Antara Muka Seragam: Komunikasi antara klien dan pelayan mesti dilakukan dengan cara yang standard, menggunakan kaedah HTTP seperti GET, POST, PUT dan DELETE.
Mencipta API RESTful dengan Flask
Kini kami akan mencipta API mudah yang menguruskan senarai pengguna. API akan membolehkan anda menambah, mengedit, melihat dan memadam pengguna.
1. Memasang Kelalang
Pertama, pastikan anda telah memasang Flask. Jika tidak, anda boleh memasangnya menggunakan pip:
pip install Flask
2. Struktur Projek
Projek kami akan mempunyai struktur berikut:
/api_flask │ ├── app.py └── requirements.txt
3. Mengkonfigurasi Flask
Dalam fail app.py, kami mulakan dengan mengimport perpustakaan yang diperlukan dan mengkonfigurasi aplikasi Flask kami:
from flask import Flask, jsonify, request app = Flask(__name__) # Dados simulados users = [ {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}, {'id': 2, 'name': 'Bob', 'email': 'bob@example.com'} ]
4. Mencipta Titik Akhir
Sekarang, mari buat titik akhir kami untuk lihat, tambah, kemas kini dan padam pengguna.
4.1. Titik Akhir untuk Senarai Pengguna
Kami akan menggunakan kaedah GET untuk menyenaraikan semua pengguna:
@app.route('/users', methods=['GET']) def get_users(): return jsonify(users), 200
4.2. Titik Akhir untuk Mendapatkan Pengguna Tertentu
Kami akan menggunakan kaedah GET dengan ID pengguna untuk mendapatkan butiran pengguna tertentu:
@app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = next((user for user in users if user['id'] == user_id), None) if user: return jsonify(user), 200 else: return jsonify({'message': 'User not found'}), 404
4.3. Titik Akhir untuk Mencipta Pengguna Baharu
Kaedah POST akan digunakan untuk menambah pengguna baharu. Pelanggan akan menghantar data dalam format JSON.
@app.route('/users', methods=['POST']) def create_user(): data = request.get_json() new_user = { 'id': len(users) + 1, 'name': data['name'], 'email': data['email'] } users.append(new_user) return jsonify(new_user), 201
4.4. Titik Akhir untuk Kemas Kini Pengguna
Di sini kami menggunakan kaedah PUT untuk mengemas kini data pengguna sedia ada:
@app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): data = request.get_json() user = next((user for user in users if user['id'] == user_id), None) if user: user['name'] = data['name'] user['email'] = data['email'] return jsonify(user), 200 else: return jsonify({'message': 'User not found'}), 404
4.5. Titik Akhir untuk Memadam Pengguna
Kami menggunakan kaedah DELETE untuk mengalih keluar pengguna:
@app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): global users users = [user for user in users if user['id'] != user_id] return jsonify({'message': 'User deleted'}), 200
5. Menjalankan API
Sekarang, jalankan sahaja aplikasi kami:
if __name__ == '__main__': app.run(debug=True)
Menjalankan fail app.py, API kami akan tersedia di http://127.0.0.1:5000/users.
6. Pengesahan dengan Flask
Untuk menambah lapisan keselamatan pada API kami, kami boleh menggunakan JWT (JSON Web Token). Dengan JWT, kami boleh memastikan bahawa hanya pengguna yang disahkan boleh mengakses titik akhir tertentu.
6.1. Memasang Flask-JWT-Extended
Pasang sambungan yang diperlukan:
pip install Flask-JWT-Extended
6.2. Mengkonfigurasi JWT
Kemas kini fail app.py anda untuk menyertakan pengesahan JWT:
from flask_jwt_extended import JWTManager, create_access_token, jwt_required app.config['JWT_SECRET_KEY'] = 'your-secret-key' # Troque pela sua chave secreta jwt = JWTManager(app) # Login para obter o token @app.route('/login', methods=['POST']) def login(): data = request.get_json() if data['username'] == 'admin' and data['password'] == 'admin': access_token = create_access_token(identity={'username': 'admin'}) return jsonify(access_token=access_token), 200 else: return jsonify({'message': 'Invalid credentials'}), 401 # Exemplo de endpoint protegido @app.route('/protected', methods=['GET']) @jwt_required() def protected(): return jsonify({'message': 'Access granted to protected endpoint'}), 200
Sekarang, apabila mengakses titik akhir /protected, anda perlu menghantar token JWT dalam pengepala permintaan untuk mengesahkan pengguna.
7. Menggunakan API dengan Klien HTTP
Untuk menggunakan API, kita boleh menggunakan alatan seperti Posmen atau perpustakaan seperti permintaan dalam Python.
Contoh cara menggunakan API menggunakan permintaan:
import requests # Consumindo o endpoint de listagem de usuários response = requests.get('http://127.0.0.1:5000/users') print(response.json())
Kesimpulan
Mencipta API RESTful dengan Flask adalah mudah dan fleksibel. Flask menawarkan rangka kerja minimalis yang boleh dikembangkan untuk menyertakan ciri seperti pengesahan, pengendalian ralat dan lapisan keselamatan yang lain. Dengan mengikuti prinsip REST dan amalan pembangunan yang baik, adalah mungkin untuk membina API yang cekap dan berskala dengan Python.
Kini anda boleh membina API RESTful anda sendiri dengan Flask, menyesuaikan mengikut keperluan dan keperluan anda.
Atas ialah kandungan terperinci Cara Membuat API RESTful dengan Flask dan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kunci untuk menangani pengesahan API adalah untuk memahami dan menggunakan kaedah pengesahan dengan betul. 1. Apikey adalah kaedah pengesahan yang paling mudah, biasanya diletakkan dalam tajuk permintaan atau parameter URL; 2. BasicAuth menggunakan nama pengguna dan kata laluan untuk penghantaran pengekodan Base64, yang sesuai untuk sistem dalaman; 3. OAuth2 perlu mendapatkan token terlebih dahulu melalui client_id dan client_secret, dan kemudian bawa bearertoken dalam header permintaan; 4. Untuk menangani tamat tempoh token, kelas pengurusan token boleh dikemas dan secara automatik menyegarkan token; Singkatnya, memilih kaedah yang sesuai mengikut dokumen dan menyimpan maklumat utama adalah kunci.

Untuk mewujudkan API moden dan cekap menggunakan Python, FastAPI disyorkan; Ia berdasarkan kepada jenis python standard yang diminta dan secara automatik dapat menghasilkan dokumen, dengan prestasi yang sangat baik. Selepas memasang FastAPI dan Asgi Server UVicorn, anda boleh menulis kod antara muka. Dengan menentukan laluan, menulis fungsi pemprosesan, dan data yang kembali, API boleh dibina dengan cepat. FastAPI menyokong pelbagai kaedah HTTP dan menyediakan sistem dokumentasi Swaggersui dan Redoc yang dihasilkan secara automatik. Parameter URL boleh ditangkap melalui definisi laluan, manakala parameter pertanyaan boleh dilaksanakan dengan menetapkan nilai lalai untuk parameter fungsi. Penggunaan rasional model Pydantic dapat membantu meningkatkan kecekapan dan ketepatan pembangunan.

Untuk menguji API, anda perlu menggunakan Perpustakaan Permintaan Python. Langkah -langkahnya adalah untuk memasang perpustakaan, menghantar permintaan, mengesahkan respons, menetapkan masa dan cuba semula. Pertama, pasang perpustakaan melalui PipinstallRequests; kemudian gunakan permintaan.get () atau requests.post () dan kaedah lain untuk menghantar permintaan GET atau pos; Kemudian semak respons.status_code dan response.json () untuk memastikan hasil pulangan mematuhi jangkaan; Akhirnya, tambah parameter tamat masa untuk menetapkan masa tamat, dan menggabungkan perpustakaan semula untuk mencapai percubaan automatik untuk meningkatkan kestabilan.

Dalam Python, pembolehubah yang ditakrifkan di dalam fungsi adalah pembolehubah tempatan dan hanya sah dalam fungsi; Ditakrifkan secara luaran adalah pembolehubah global yang boleh dibaca di mana sahaja. 1. Pembolehubah tempatan dimusnahkan kerana fungsi dilaksanakan; 2. Fungsi ini boleh mengakses pembolehubah global tetapi tidak dapat diubahsuai secara langsung, jadi kata kunci global diperlukan; 3. Jika anda ingin mengubah suai pembolehubah fungsi luar dalam fungsi bersarang, anda perlu menggunakan kata kunci nonlocal; 4. Pembolehubah dengan nama yang sama tidak mempengaruhi satu sama lain dalam skop yang berbeza; 5. Global mesti diisytiharkan apabila mengubah suai pembolehubah global, jika tidak, kesilapan unboundlocalerror akan dibangkitkan. Memahami peraturan ini membantu mengelakkan pepijat dan menulis lebih banyak fungsi yang boleh dipercayai.

Cara untuk mengakses objek JSON bersarang di Python adalah untuk menjelaskan struktur dan kemudian lapisan indeks dengan lapisan. Pertama, sahkan hubungan hierarki JSON, seperti kamus kamus bersarang atau senarai; Kemudian gunakan kunci kamus dan indeks senarai untuk mengakses lapisan mengikut lapisan, seperti data "butiran" ["zip"] untuk mendapatkan pengekodan zip, data "butiran" [0] untuk mendapatkan hobi pertama; Untuk mengelakkan keyError dan indexError, nilai lalai boleh ditetapkan oleh kaedah .get (), atau fungsi enkapsulasi Safe_get boleh digunakan untuk mencapai akses yang selamat; Untuk struktur yang kompleks, cari rekursif atau gunakan perpustakaan pihak ketiga seperti JMespath untuk mengendalikan.

Ya, anda boleh menghuraikan jadual HTML menggunakan python dan panda. Pertama, gunakan fungsi pandas.read_html () untuk mengekstrak jadual, yang boleh menghuraikan elemen HTML dalam laman web atau rentetan ke dalam senarai dataframe; Kemudian, jika jadual tidak mempunyai tajuk lajur yang jelas, ia boleh ditetapkan dengan menentukan parameter header atau menetapkan secara manual atribut. Untuk halaman yang kompleks, anda boleh menggabungkan Perpustakaan Permintaan untuk mendapatkan kandungan HTML atau menggunakan BeautifulSoup untuk mencari jadual tertentu; Perhatikan perangkap biasa seperti rendering JavaScript, masalah pengekodan, dan pengiktirafan pelbagai meja.

DEF sesuai untuk fungsi kompleks, menyokong pelbagai baris, rentetan dokumen dan bersarang; Lambda sesuai untuk fungsi tanpa nama mudah dan sering digunakan dalam senario di mana fungsi diluluskan oleh parameter. Keadaan memilih DEF: ① Badan fungsi mempunyai pelbagai baris; ② Penerangan dokumen diperlukan; ③ dipanggil pelbagai tempat. Apabila memilih Lambda: ① Penggunaan Satu Masa; ② Tiada nama atau dokumen yang diperlukan; ③ Logik mudah. Perhatikan bahawa Lambda kelewatan pembolehubah mengikat boleh membuang kesilapan dan tidak menyokong parameter lalai, penjana, atau asynchronous. Dalam aplikasi sebenar, fleksibel memilih mengikut keperluan dan memberi keutamaan kepada kejelasan.

Bagaimana cara mengendalikan fail JSON yang besar di Python? 1. Gunakan Perpustakaan IJSON untuk mengalir dan mengelakkan limpahan memori melalui parsing item demi item; 2. Jika dalam format Jsonlines, anda boleh membacanya dengan garis dan memprosesnya dengan json.loads (); 3. Atau memecah fail besar ke dalam kepingan kecil dan kemudian memprosesnya secara berasingan. Kaedah ini dengan berkesan menyelesaikan masalah batasan memori dan sesuai untuk senario yang berbeza.
