ساخت REST API با FastAPI و Pydantic
ساخت endpointهای HTTP تایپدار در پایتون با FastAPI ساده است. مدلهای Pydantic دادههای ورودی را اعتبارسنجی و شکل پاسخ را مشخص میکنند. FastAPI نیز با استفاده از همین نوعها، مستندات تعاملی API را تولید میکند.
تعریف مدل درخواست
با مدل Pydantic ورودیهای مجاز را مشخص کنید. اعتبارسنجی پیش از اجرای تابع endpoint انجام میشود؛ بنابراین payload نامعتبر پاسخ ساختاریافته 422 دریافت میکند.
ساخت برنامه و endpointها
سرور توسعه را با دستور fastapi dev main.py اجرا کنید و برای آزمایش endpointها، صفحه /docs را باز کنید.
این فهرست درون حافظه برای نمایش نحوه دریافت درخواست مناسب است، اما ذخیرهسازی پایدار نیست: با راهاندازی مجدد برنامه دادهها از بین میروند و درخواستهای همزمان میتوانند بهروزرسانی ناامن ایجاد کنند. سرویس واقعی باید از پایگاه داده استفاده کند و رفتار تراکنشها و همزمانی را مشخص کند.
جداسازی ورودی و خروجی
برای جلوگیری از افشای تصادفی فیلدهای داخلی پایگاه داده، مدل پاسخی تعریف کنید که فقط اطلاعات قابلنمایش برای کلاینت را برگرداند.
در برنامهی عملیاتی، احراز هویت و مجوزها، صفحهبندی، پاسخ خطای یکپارچه، migration پایگاه داده و ثبت درخواستها را هم در نظر بگیرید. حتی اگر فرانتاند اعتبارسنجی دارد، ورودی کاربر را در مرز API نیز بررسی کنید.
آزمایش API
کلاینت آزمایش FastAPI میتواند endpointها را بدون اجرای سرور شبکه بررسی کند.
آزمایشها را به وضعیت خاصی از پایگاه داده وابسته نکنید و برای فیلدهای حذفشده، مقادیر نامعتبر و کدهای خطای مورد انتظار نیز حالتهای جداگانه بنویسید.
جمعبندی
FastAPI و Pydantic پایهای جمعوجور برای ساخت APIهای تایپدار فراهم میکنند. مدلهای روشن درخواست و پاسخ، مستندسازی، اعتبارسنجی و آزمایش قرارداد API را با رشد برنامه آسانتر میکنند.
Other posts that might interest you...
Building a REST API with FastAPI and Pydantic
Build a small, validated API with FastAPI, define clear request and response models, and test the endpoints.
شروع یادگیری ماشین با Scikit-learn
با مفاهیم اولیه یادگیری ماشین و کتابخانه Scikit-learn آشنا شوید و اولین مدل خود را آموزش دهید.
Getting Started with Machine Learning using Scikit-learn
A beginner-friendly introduction to machine learning with Python and Scikit-learn, covering datasets, training models, and evaluation.