مقدمه
در این کتاب، ساخت کامل یک برنامه به نام Greenlight را از ابتدا تا انتها قدمبهقدم پیش میبریم؛ یک API مبتنی بر JSON برای دریافت و مدیریت اطلاعات مربوط به فیلمها. میتوانید عملکرد اصلی آن را تا حدی شبیه Open Movie Database API در نظر بگیرید.
در نهایت، API برنامه Greenlight از endpointها و عملیاتهای زیر پشتیبانی خواهد کرد:
| عملیات | الگوی URL | متد |
|---|---|---|
| نمایش وضعیت سلامت برنامه و اطلاعات نسخه | /v1/healthcheck | GET |
| نمایش جزئیات همه فیلمها | /v1/movies | GET |
| ایجاد یک فیلم جدید | /v1/movies | POST |
| نمایش جزئیات یک فیلم مشخص | /v1/movies/:id | GET |
| بهروزرسانی جزئیات یک فیلم مشخص | /v1/movies/:id | PATCH |
| حذف یک فیلم مشخص | /v1/movies/:id | DELETE |
| ثبتنام یک کاربر جدید | /v1/users | POST |
| فعالسازی یک کاربر مشخص | /v1/users/activated | PUT |
| بهروزرسانی رمز عبور یک کاربر مشخص | /v1/users/password | PUT |
| تولید یک توکن احراز هویت جدید | /v1/tokens/authentication | POST |
| تولید یک توکن جدید برای بازنشانی رمز عبور | /v1/tokens/password-reset | POST |
| نمایش معیارهای برنامه | /debug/vars | GET |
برای اینکه دیدی از شکل API از نگاه یک کلاینت داشته باشید، تا پایان این کتاب endpoint مربوط به GET /v1/movies/:id یک پاسخ HTTP با بدنه JSON شبیه نمونه زیر برمیگرداند:
$ curl -H "Authorization: Bearer RIDBIAE3AMMK57T6IAEBUGA7ZQ" localhost:4000/v1/movies/1
{
"movie": {
"id": 1,
"title": "Moana",
"year": 2016,
"runtime": "107 mins",
"genres": [
"animation",
"adventure"
],
"version": 1
}
}
در پشت صحنه، از PostgreSQL به عنوان پایگاه داده برای ذخیره دائمی همه دادهها استفاده خواهیم کرد. در پایان کتاب نیز API نهایی را روی یک سرور لینوکسی در DigitalOcean مستقر میکنیم.
قراردادها
بلوکهای کد در این کتاب با پسزمینه نقرهای نمایش داده میشوند، مثل نمونه زیر. اگر یک بلوک کد خیلی طولانی باشد، بخشهایی که به بحث مربوط نیستند ممکن است با سهنقطه جایگزین شوند. برای اینکه دنبال کردن کد آسانتر باشد، بیشتر بلوکهای کد یک نوار عنوان در بالا دارند که نام فایل حاوی کد را نشان میدهد. مثل این:
package main ... // Indicates that some existing code has been omitted. func sayHello() { fmt.Println("Hello world!") }
دستورهای ترمینال یا خط فرمان با پسزمینه مشکی نمایش داده میشوند و معمولا با علامت دلار شروع میشوند. این دستورها باید روی هر سیستمعامل مبتنی بر Unix، از جمله macOS و Linux، کار کنند. خروجی نمونه با رنگ نقرهای زیر دستور نمایش داده میشود، مثل این:
$ echo "Hello world!" Hello world!
اگر از Windows استفاده میکنید، باید این دستورها را با معادل آنها در Command Prompt جایگزین کنید یا کار مورد نظر را از طریق رابط گرافیکی معمول Windows انجام دهید.
لطفا توجه داشته باشید که تاریخها و زمانهایی که در اسکرینشاتها و خروجی نمونه دستورها دیده میشوند فقط جنبه نمایشی دارند. لزوما با یکدیگر هماهنگ نیستند و در سراسر کتاب نیز الزاما ترتیب زمانی پیوستهای ندارند.
برخی فصلهای این کتاب با بخشی به نام اطلاعات تکمیلی تمام میشوند. این بخشها شامل مطالبی هستند که مستقیما به ساخت برنامه ما مربوط نیستند، اما دانستنشان همچنان مهم است یا گاهی فقط جالب است.