Let's Go Further › مقدمه
قبلی · فهرست · بعدی
فصل ۱.

مقدمه

در این کتاب، ساخت کامل یک برنامه به نام 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 مستقر می‌کنیم.

قراردادها

بلوک‌های کد در این کتاب با پس‌زمینه نقره‌ای نمایش داده می‌شوند، مثل نمونه زیر. اگر یک بلوک کد خیلی طولانی باشد، بخش‌هایی که به بحث مربوط نیستند ممکن است با سه‌نقطه جایگزین شوند. برای اینکه دنبال کردن کد آسان‌تر باشد، بیشتر بلوک‌های کد یک نوار عنوان در بالا دارند که نام فایل حاوی کد را نشان می‌دهد. مثل این:

File: hello.go
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 انجام دهید.

لطفا توجه داشته باشید که تاریخ‌ها و زمان‌هایی که در اسکرین‌شات‌ها و خروجی نمونه دستورها دیده می‌شوند فقط جنبه نمایشی دارند. لزوما با یکدیگر هماهنگ نیستند و در سراسر کتاب نیز الزاما ترتیب زمانی پیوسته‌ای ندارند.

برخی فصل‌های این کتاب با بخشی به نام اطلاعات تکمیلی تمام می‌شوند. این بخش‌ها شامل مطالبی هستند که مستقیما به ساخت برنامه ما مربوط نیستند، اما دانستنشان همچنان مهم است یا گاهی فقط جالب است.