هادی شرقی
هادی شرقی
خواندن ۴ دقیقه·۵ سال پیش

برنامه Hello World با استفاده از Swift Vapor 3

در این سری مطالب میخوام طریقه نصب، راه اندازی و نوشتن API به زبان Swift توسط فریمورک Vapor رو نشون بدم. برای استفاده از این مطالب آشنایی کافی با زبان Swift پیش نیاز و ضروری است. مثل همیشه اول برنامه Hello World رو مینویسیم!

اصلا چرا با Swift باید API ها مون رو بنویسیم؟ مگر PHP با این همه فریمورک‌های مختلف یا Javascript با چندین فریمورک و صدها هزار پکیج آماده چه مشکلی دارن؟ باید بگم هیچ مشکلی ندارن،خیلی هم خوب هستن! ولی برنامه نویس iOS که با زبان Swift آشنایی داره، اگر بتونه back-end پروژه اش رو با همون زبان بنویسه محاسن متعددی داره.

  • اگر به زبان های معمول که در back-end استفاده میشه تسلط ندارین، برای نوشتن back-end برنامه iOS خودتون لازم نیست زبان جدید رو یاد بگیرین.
  • جابجا شدن بین کد برنامه‌های client و server و تغییر زبان همیشه ناخوشایند بوده.
  • زبان‌های PHP, Python و Javascript (به غیر از TypeScript) هیچ کدام Type Safe نیستن. یعنی شما میتونین یه متغیر Int داشته باشین امکان اینکه در یک قسمت از کد برنامه به اشتباه یک array رو داخل اون ذخیره کنین همیشه وجود داره، اونم بدون اینکه کسی به شما ایراد بگیره! این موضوع تا یه جایی خیلی جذابه، ولی مشکل وقتی مشاهده میشه که تا وقتی پروژه اجرا نشده (زمان Run time) شما متوجه خطاهای ناشی از این قضیه نمیشین. در Swift هیچوقت امکان نداره به اشتباه این کار انجام بشه. چون کامپایلر قبل از اجرای برنامه به شما خطا میده.
  • میتونین مدل هایی که در سمت اپلیکیشن میسازین، همون ها رو در سمت back-end استفاده کنین. ممکنه در یک پروژه ساده و کوچک موضوع مهمی نباشه ولی وقتی ده‌ها مدل مختلف ساختین و مجبور هستین عینا این مدل ها رو در طرف دیگر پروژه هم بسازین اینکار واقعا خسته کننده میشه و امکان خطا رو هم بالا میبره. اضافه بر این تغییر در هر کدوم از مدل ها باید در هر دو جا انجام بشه.
  • و مهمترین دلیل اینه که Swift زبان جذابی هست!


برای شروع کار شما کافیه که برنامه XCode رو بر روی مک خود نصب کنین. ورژن XCode باید 9.3 و به بالا باشه، همچنین ورژن Swift باید 4.1 به بالا باشه. برای چک کردن این موضوع دستور زیر را در Termial وارد کنید.

swift --version

Apple Swift version 4.1.0 (swiftlang-900.0.69.2 clang-900.0.38)
Target: x86_64-apple-macosx10.9


دیگه میتونیم Vapor رو نصب کنیم. برای نصب راحت ترین راه استفاده از Homebrew است. اگر هنوز Homebrew رو نصب نکردین این دستور رو در Terminal اجرا کنین و صبر کنین تا نصب تمام بشه.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


بعد از نصب Homebrew باید این دستور ها رو اجرا کنین تا Vapor نصب بشه.

brew tap vapor/tap
brew install vapor/tap/vapor


برای چک کردن صحت نصب میتونین دستور زیر رو اجرا کنین

vapor --version

Vapor Toolbox: 3.1.10


حالا میریم سراغ ساخت اولین پروژه. دستور زیر رو اجرا کنین تا پروژه ساخته بشه.

vapor new hello-world

Cloning Template [ • ] (ممکنه تا چند دقیقه فقط این متن رو ببینین! صبر کنین)

در این اینجا Vapor داره تمام کتابخانه های لازم برای ساخت پروژه رو دانلود میکنه. برای بار اول اجرای این دستور خیلی طول میکشه. اما بعد از آن دفعات بعدی خیلی سریع تر میشه.

منتظر باشین تا این صحنه رو ببینین!


وارد دایرکتوری پروژه بشین و دستور زیر رو اجرا کنین تا Vapor toolbox از روی پروژه شما یک پروژه XCode بسازه و بتونین اون رو در XCode باز کرده و شروع به کد نویسی کنیم.

cd hello-world
vapor xcode -y


برنامه XCode باز شده و پروژه شما هم بارگذاری شده است. قبل از هر کاری پروژه رو Build کنین. چون برای بار اول این کار خیلی طول میکشه و بهتره زودتر شروع کنین! دکمه cmd+B رو بزنین و صبر کنین تا کامپایل پروژه تمام بشه.

الان میتونین برنامه رو اجرا کنین. از قسمت Scheme گزینه Run -> My Mac رو انتخاب کنید. و Cmd+R رو بزنین.


وقتی برنامه اجرا بشه، در قسمت Console عبارت زیر دیده میشه.

Server starting on http://localhost:8080

الان میتونین آدرس بالا رو در بروزر وارد کنین و نتیجه رو ببینین. البته نتیجه خیلی خارق العاده نیست!

فقط یه جمله کوچک که نشون میده همه چی خوب پیش رفته!

It works!


فایل زیر را در XCode باز کنید.

Sources/App/routes.swift


در این فایل دو route که با متد GET صدا زده میشن تعریف شده است.

router.get { req in
return "It works!"
}

این متد که با فراخوانی آدرس http://localhost:8080 صدا زده میشه، یه string بر میگردونه

router.get("hello") { req in
return "Hello, world!"
}

متد بعدی با فراخوانی آدرس http://localhost:8080/hello صدا زده میشه، و اون هم یه string بر میگردونه. همونی که قرار بود در آخر این مطلب مشاهده کنیم!

Hello, world!










swiftapiend
Back-end / iOS Developer
شاید از این پست‌ها خوشتان بیاید