با گسترش فناوریهای ابری و اینترنتی، امروزه بیشتر نرمافزارها به جای اجرا شدن روی یک سیستم شخصی، بر بستر اینترنت و سرورهای ابری ارائه میشوند.
در این مقاله یاد میگیریم که وب سرویس چیست، چرا اهمیت دارد و چگونه میتوان با استفاده از زبان محبوب پایتون یک وب سرویس واقعی پیادهسازی کرد.
در طول مسیر با سه کتابخانه مهم web.py، Flask و FastAPI کار میکنیم و مثالهای عملی خواهیم داشت.
وب سـرویس چیست و چه کاربردی دارد؟
وب سرویس یا همان Web Service مجموعهای از قابلیتها است که از طریق اینترنت در اختیار سایر برنامهها یا کاربران قرار میگیرد.
به زبان ساده، وب سرویسها پل ارتباطی بین کلاینت (مانند اپلیکیشن موبایل یا مرورگر وب) و سرور هستند.
به جای آنکه هر برنامه به طور مستقل دادهها را پردازش کند، وب سرویس این کار را به صورت متمرکز در سرور انجام میدهد و نتیجه را به کلاینت بازمیگرداند.
از کاربردهای روزمره وب سرویسها میتوان به موارد زیر اشاره کرد:
- سیستمهای بانکی برای نمایش مانده حساب یا انتقال وجه
- سایتهای فروشگاهی برای مدیریت موجودی و سفارشها
- اپلیکیشنهای پیامرسان برای تبادل پیام و فایل
- اینترنت اشیا (IoT) برای اتصال دستگاهها به یک سرور مرکزی
چرا باید وب سـرویس را با پایتون نوشت؟
پایتون یکی از محبوبترین زبانهای برنامهنویسی جهان است.
سادگی سینتکس، کتابخانههای متنوع و جامعه بزرگ توسعهدهندگان باعث شده است که انتخابی عالی برای توسعه وب سرویسها باشد.
چند دلیل برای استفاده از پایتون در وب سرویس:
- سادگی یادگیری و توسعه سریع
- پشتیبانی از فریمورکهای سبک و سنگین (Django، Flask، FastAPI)
- هماهنگی کامل با ساختارهای دادهای مانند JSON و XML
- جامعه فعال و منابع آموزشی گسترده
پیشنیازهای نوشتن وب سـرویس با پایتون
قبل از شروع باید ابزارها و کتابخانههای لازم را نصب کنیم:
- نصب آخرین نسخه پایتون از سایت Python.org
- نصب کتابخانههای مورد نیاز مانند web.py، Flask و FastAPI با دستور:
pip install web.py flask fastapi uvicorn
- آشنایی اولیه با فایلهای دادهای XML و JSON
آموزش نوشتن وب سـرویس با web.py
کتابخانه web.py یکی از سادهترین ابزارها برای نوشتن وب سرویس با پایتون است.
در این مثال یک فایل XML از کاربران داریم و میخواهیم لیست کاربران و اطلاعات هر کاربر را از طریق وب سرویس نمایش دهیم.
ایجاد فایل دادهها
<users>
<user id="1" name="Rocky" age="38"/>
<user id="2" name="Steve" age="50"/>
<user id="3" name="Melinda" age="38"/>
</users>
کد وب سرویس با web.py
#!/usr/bin/env python
import web
import xml.etree.ElementTree as ET
tree = ET.parse('user_data.xml')
root = tree.getroot()
urls = (
'/users', 'list_users',
'/users/(.*)', 'get_user'
)
app = web.application(urls, globals())
class list_users:
def GET(self):
output = 'users: ['
for child in root:
output += str(child.attrib) + ','
output += ']'
return output
class get_user:
def GET(self, user):
for child in root:
if child.attrib['id'] == user:
return str(child.attrib)
if __name__ == "__main__":
app.run()
با اجرای اسکریپت، در مرورگر میتوانید آدرس
http://localhost:8080/users
را باز کنید تا لیست کاربران نمایش داده شود.
همچنین با آدرس
http://localhost:8080/users/2
اطلاعات کاربر شماره ۲ نمایش داده خواهد شد.
آموزش نوشتن وب سـرویس با Flask
فریمورک Flask از محبوبترین ابزارهای توسعه وب در پایتون است.
سادگی، انعطافپذیری و پشتیبانی از JSON باعث شده گزینهای عالی برای وب سرویسهای سبک باشد.
مثال ساده با Flask
from flask import Flask, jsonify
app = Flask(__name__)
users = [
{"id": 1, "name": "Rocky", "age": 38},
{"id": 2, "name": "Steve", "age": 50},
{"id": 3, "name": "Melinda", "age": 38}
]
@app.route("/users", methods=["GET"])
def get_users():
return jsonify(users)
@app.route("/users/<int:user_id>", methods=["GET"])
def get_user(user_id):
for user in users:
if user["id"] == user_id:
return jsonify(user)
return jsonify({"error": "User not found"}), 404
if __name__ == "__main__":
app.run(port=8080, debug=True)
با اجرای این کد، لیست کاربران به صورت JSON در مسیر
/users
در دسترس خواهد بود و میتوانید با آیدی هر کاربر اطلاعات او را مشاهده کنید.
آموزش نوشتن وب سـرویس با FastAPI
FastAPI یکی از مدرنترین و سریعترین فریمورکهای پایتون برای توسعه وب سرویس است.
این فریمورک به طور پیشفرض مستندات API را با Swagger فراهم میکند و کار توسعهدهنده را بسیار سادهتر میسازد.
نمونه وب سرویس با FastAPI
from fastapi import FastAPI
app = FastAPI()
users = [
{"id": 1, "name": "Rocky", "age": 38},
{"id": 2, "name": "Steve", "age": 50},
{"id": 3, "name": "Melinda", "age": 38}
]
@app.get("/users")
def get_users():
return users
@app.get("/users/{user_id}")
def get_user(user_id: int):
for user in users:
if user["id"] == user_id:
return user
return {"error": "User not found"}
برای اجرای FastAPI کافی است دستور زیر را وارد کنید:
uvicorn main:app --reload --port 8080
سپس میتوانید علاوه بر مشاهده وب سرویس در آدرس
http://localhost:8080
به صورت خودکار مستندات Swagger را در آدرس
http://localhost:8080/docs
نیز مشاهده کنید.
مقایسه web.py، Flask و FastAPI
هر یک از این فریمورکها مزایا و معایب خود را دارند:
- web.py: بسیار ساده و مناسب برای آموزش یا پروژههای کوچک
- Flask: پرکاربرد، انعطافپذیر و محبوب برای پروژههای کوچک تا متوسط
- FastAPI: سریع، مدرن و مناسب برای پروژههای بزرگ و مقیاسپذیر
نکات مهم در طراحی وب سـرویس
نوشتن وب سرویس فقط به اجرای کد ختم نمیشود. برای داشتن یک وب سرویس حرفهای باید به موارد زیر توجه کرد:
- امنیت: استفاده از HTTPS، مدیریت توکن و احراز هویت
- مدیریت خطا: بازگرداندن پیامهای خطای مناسب
- مستندسازی: کمک به توسعهدهندگان با ابزارهایی مانند Swagger
- بهینهسازی: مدیریت منابع، کش دادهها و جلوگیری از ترافیک اضافی
کاربردهای واقعی وب سـرویسهای پایتون
امروزه وب سرویسهای نوشتهشده با پایتون در بخشهای مختلف استفاده میشوند:
- اپلیکیشنهای موبایل برای دریافت داده از سرور
- وبسایتهای پویا برای مدیریت کاربران و سفارشها
- سیستمهای سازمانی مانند CRM و ERP
- اینترنت اشیا (IoT) برای مدیریت دستگاههای هوشمند
در این مقاله با مفهوم وب سرویس آشنا شدیم و یاد گرفتیم که چگونه با سه ابزار قدرتمند پایتون یعنی web.py، Flask و FastAPI وب سرویسهای واقعی بسازیم.
انتخاب بهترین فریمورک بسته به نیاز پروژه و سطح پیچیدگی آن متفاوت است.
اگر در ابتدای راه هستید میتوانید از web.py شروع کنید، برای پروژههای متوسط Flask بهترین انتخاب است و اگر به دنبال پروژههای بزرگ و مقیاسپذیر هستید FastAPI را پیشنهاد میکنیم.
نوین هاست یار نوین شماست
اگر قصد دارید وب سرویس خود را روی یک سرور امن و پرسرعت اجرا کنید، نوین هاست بهترین گزینه است.
با سرویسهای متنوع هاستینگ، سرور مجازی، سرور اختصاصی و زیرساخت ابری، شما میتوانید به راحتی وب سرویسهای پایتون خود را راهاندازی کنید.
تیم پشتیبانی حرفهای نوین هاست همواره در کنار شماست تا تجربهای سریع، پایدار و ایمن از میزبانی وب داشته باشید.