12/08/2018, 14:46

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.

0