Getting started with Vapor - A web framework for Swift
Chắc hẳn các bạn đã quen thuộc với việc lập trình các ứng dụng mobile bằng Swift, tuy nhiên Swift còn là một open source, tạo ra vô vàng cơ hội và mở rộng phạm vi sử dụng của Swift. Một trong số đó là sử dụng Swift để viết ứng dụng web, như bài viết này sẽ giới thiệu ngay dưới đây. Hiện tại có ba ...
Chắc hẳn các bạn đã quen thuộc với việc lập trình các ứng dụng mobile bằng Swift, tuy nhiên Swift còn là một open source, tạo ra vô vàng cơ hội và mở rộng phạm vi sử dụng của Swift. Một trong số đó là sử dụng Swift để viết ứng dụng web, như bài viết này sẽ giới thiệu ngay dưới đây.
Hiện tại có ba service dành cho server side viết bằng Swift là Perfect, Kitura và Vapor. Bài viết sẽ giới thiệu những kiến thức cơ bản, cách cài đặt, sử dụng và deploy Vapor. Nào, hãy cùng bắt tay vào bước đầu tiên, đó chính là tiến hành cài đặt.
Cài đặt Vapor
Cài đặt Xcode
Vapor yêu cầu Swift 3, nên để sử dụng Swift 3 trên MacOS, bạn cần cài đặt Xcode 8 từ App Store. Sau khi cài đặt xong, kiểm tra lại xem việc cài đặt đã thành công chưa bằng câu lệnh sau:
curl -sL check.vapor.sh | bash
Cài đặt Toolbox Toolbox là command line interface của Vapor, nó cung cấp shortcuts và hỗ trợ cho những task phổ biến. Chạy đoạn scrip sau để cài toolbox:
curl -sL toolbox.vapor.sh | bash
Sau khi cài xong, ta có thể tiến hành kiểm tra lại bằng cách chạy câu lệnh help, nếu nó in ra những câu lệnh có sẵn thì việc cài đặt đã thành công:
vapor --help
Bây giờ ta đã có thể tạo Vapor project đầu tiên.
Tạo mới Vapor project
Hãy bắt đầu bằng Hello World:
vapor new Hello
Cấu trúc project của Vapor chắc hẳn quen thuộc với bạn nếu bạn đã từng làm qua các web frameworks khác:
Hello │── Sources │ └── App │ └── Controllers │ └── Middleware │ └── Models │ └── main.swift │ ── Public │── Resources │ └── Views └── Package.swift
Đối với demo này chúng ta sẽ quan tâm đến file main.swift trong:
Hello └── Sources └── App └── main.swift
Droplet Trong file main.swift có đoạn lệnh sau:
let drop = Droplet()
Đây là nơi mà droplet duy nhất được khai báo và sử dụng trong demo này. Droplet là thành phần quan trọng nhất trong Vapor server. Nó chứa rất nhiều những functions tạo nên cốt lõi của server. Sau khi tạo ra drop, ta có thể khởi tạo route dựa vào Droplet, nó sẽ kết nối tất cả các GET request đến /hello:
drop.get("hello") { request in return "Hello, world!" }
Cuối cùng, thêm dòng lệnh sau phía dưới cùng của file main:
drop.run()
Compiling Hãy chắc chắn rằng bạn đang ở root folder của project, và chạy dòng lệnh sau ở terminal:
vapor build
Câu lệnh trên sẽ chạy 'swift build' ở background. Swift Package Manager sẽ download những dependencies tương ứng từ git, sau đó nó sẽ compile và link những dependencies này với nhau. Khi dòng lệnh trên hoàn thành, ta sẽ thấy 'Building Project [Done]'.
Run
Chạy dòng lệnh sau để khởi động và run server:
vapor run serve
Ta sẽ thấy message 'Server starting...' hiện ra trên terminal, lúc này nếu bạn truy cập vào đường link http://localhost:8080/hello từ browser, bạn sẽ thấy trang Hello world ta vừa tạo ra đấy.
Xử lý HTTP Requests
Việc xử lý HTTP request trên Vapor cũng tương tự những frameworks khác như Express, Flask... Ta sẽ tìm hiểu GET request trong bài viết này. Ví dụ: nếu muốn in ra dòng chữ "Hello Sushi" khi bạn mở "localhost:8080/food/Sushi", hãy nhìn đoạn code sau:
drop.get("/food",":food") { request in if let food = request.parameters["food"]?.string { return "Hello (food)!" } return "Error retrieving parameters." }
Function get() có thể input nhiều đầu vào, biến vào đầu tiên là tên của GET request parameter. Biến theo sau đó sẽ là key của parameter đó. Ví dụ:
drop.get("route", ":key", "route2", ":key2")
Droplet cũng có thể trả về view cho client. View là một file HTML được lưu trong thư mục /Resources/Views. Đó là nơi Droplet sẽ tìm kiếm views để trả về. Ta có thể xử lý view route như sau:
drop.get("/view") { request in return try drop.view("view.html") }
Deploy bằng Heroku
Heroku là một service giúp build và host Swift project. Đây là service tốt nhất và là cách dễ nhất để deploy Vapor project. Trước tiên bạn cần tạo mới tài khoản trên trang heroku.com. Bạn có thể tạo mới app sau đó liên kết với source của dự án từ Github, hoặc đơn giản hơn, bạn có thể sử dụng Heroku Git để upload source code của mình thay cho sử dụng Github. Khởi tạo git:
git init git add . git commit -m "Initial commit"
Cài Vapor Toolbelt để sử dụng Vapor’s CLI giúp deploy project lên Heroku. Nếu chưa có CLI, bạn có thể cài thông qua brew:
brew install heroku
Login vào tài khoản Heroku:
heroku login
Khởi tạo heroku cho project:
vapor heroku init
Ta sẽ cần điền một số thông tin cho project như tên, buildpack... Sau khi upload dự án lên Heroku thành công, ta có thể access vào đường link được cung cấp để xem trang web rồi đấy.
Đến đây, các bạn đã có được những kiến thức cơ bản về Vapor, những mảng kiến thức sâu hơn như Templating, Database, Sockets, Middlewares, Hashing... các bạn có thể tìm hiểu thêm để hoàn thiện hơn kiến thức của mình.