Skip to main content

[Swift] Thiết lập thư viện Perfect để viết cho server-side

Perfect là gì ?

Perfect là một web-server và toolkit cho phép các nhà phát triển sử dụng ngôn ngữ lập trình Swift để xây dựng những ứng dụng và những REST service. Nó cho phép những developer có thể phát triển ứng dụng cả client-side và server-side trong cùng 1 workspace, cùng 1 ngôn ngữ lập trình Swift. Nó là một bộ khung hoàn hảo cho những kỹ thuật cloud và mobile.




Tại sao lại sử dụng Perfect?

- Hiện tại Swift đã được Open Source vì thế nó sẽ còn phát triển nhanh và mạnh, do đó Swift là ngôn ngữ của tương lai. Nếu bạn học và nắm bắt cơ hội này chắc bạn sẽ có nhiều cơ hội phát triển sự nghiệp của mình trong tương lai hơn nữa.

- Đa số những dân lập trình trên iOS chỉ biết về Objective-C hay Swift hoặc cả 2, vì thế nếu bạn muốn viết cho server-side thì bạn phải học thêm ngôn ngữ PHP hoặc Java để có thể viết cho server-side. Nếu bạn dùng thư viện Perfect thì bạn khỏi cần quan tâm đến việc học thêm ngôn ngữ khác cho công việc đó, bạn có thể dễ dàng debug cả bên client lẫn server đều được.

- Hiện tại Perfect cũng đang trong giai đoạn phát triển và đã có 1 phiên bản release là Perfect version 1.0. Code của thư viện Perfect cũng được open source trên GitHub, nếu các bạn muốn học thêm cách người ta viết library đó như thế nào thì cũng có thể tải về và đọc code.

- Swift và Perfect có thể chạy trên nền tảng Linux vì thế các bạn có thể viết để deploy trên Linux server. Hiện tại trên mạng cũng có nhiều hướng dẫn về việc này.

Làm thế nào thiết lập thư viện Perfect trên XCode?

Hiện tại mình chưa thấy đường link trên cocoapods cho thư viện này, vì thế cách mình hướng dẫn chỉ tải và dùng trên phiên bản release 1.0 như ở trên. Mình đang dùng OS X 10.11 và XCode 7.3 (7D175). Trên GitHub của Perfect nói phải như vậy mới build được thư viện của họ. Nên nếu ai đang xài phiên bản cũ hơn hãy update lên rồi mới chạy được nha.

Demo này mình viết 1 ứng dụng trên iOS truy suất REST api, có trả về dữ liệu là 1 chuỗi HelloWorld theo dạng GET và POST:


- Bước 1: Bạn mở XCode, chọn New > Workspace để tạo 1 workspace mới, đặt tên workspace ví dụ như PerfectTutorials.

- Bước 2: Bạn tải version 1.0 của Perfect về và giải nén sẽ xuất hiện những thư mục như sau:
Bạn copy 2 thư mục là PerfectLibPerfectServer vào cùng thư mục chứa workspace:
Quay trở lại XCode, bạn nhấn vào biểu tượng dấu cộng ở góc dưới bên trái, và chọn option là Add files to "PerfectTutorials", để thêm 2 project đó vào wordspace:

- Bước 3: Tạo 1 project trên iOS với tên là PerfectHelloWorld. Trong project đó bạn tạo 1 target mới với kiểu là 1 Cocoa framework cho OS X với tên là PerfectMyServer:

- Bước 4: Bạn phải link PerfectLib vào Framework này, chọn target PerfectMyServer, chọn General tab, chỗ Linked Frameworks and Libraries bạn chọn add PerfectLib cho OSX vào.
Sau đó bạn chuyển sang Build Settings tab, và thiết lập những thuộc tính sau:
  • Skip Install = No
  • Deployment Location = Yes
  • Installation Directory = /PerfectLibraries
  • Installation Build Products Location = $(CONFIGURATION_BUILD_DIR)

- Bước 5: Tại Group PerfectMyServer trên XCode bạn tạo 1 file mới với tên như PerfectHandlers trong file đó bạn viết những đoạn code như sau:
Sau đó bạn chọn Scheme PerfectMyServer và chọn build (Command + B). Mỗi khi bạn thay đổi code bạn bắt buộc phải build framework này lại và restart lại server.

Bạn có thể thiết lập Scheme cho PerfectServerHTTPApp để mỗi lần build app này thì sẽ tự động build framework chứa code web-service của mình:


- Bước 6: Sau khi build Framework thành công bạn chọn Scheme là Perfect Server HTTP App và chọn run trên OS X:
Lưu ý: Theo mình thấy thì code trên Perfect Server HTTP App này thiếu 1 đoạn code để thay đổi đường dẫn Document Root. Các bạn có thể viết thêm 1 đoạn code trong file ViewController.swift của PerfectHTTPApp như hình sau:

- Khi bạn chạy ứng dụng PerfectServerHTTPApp thành công sẽ xuất hiện màn hình như sau:

Do mình đã thiết lập Server Address(mặc định là 0.0.0.0) theo ip của máy mình để những máy khác cùng lớp mạng có thể truy suất được và đổi Document Root (mặc định là ./webroot/) theo dúng thư mục webroot trên máy của mình. Ngoài ra các bạn nên để ý log trong console phải xuất ra như sau:

PS: Cách mở port để những máy khác có thể truy suất được máy mình làm local server các bạn vào Settings của hệ thống chọn Sharing và bật File Sharing lên:

Bạn đang chạy server thành công bây giờ là lúc bạn test xem server có phản hồi những request  của bạn hay không thì bạn có thể gọi request bằng terminal, những addon trên browser hay viết ứng dụng để thử request lên server.

Gởi request lên server thông qua terminal:

Mở ứng dụng terminal và nhập đoạn lệnh sau để truyền request kiểu GET lên server:
curl 10.190.201.95:8181/hello
Bạn sẽ thấy màn hình xuất hiện chữ như:


Nhập đoạn lệnh sau để truyền request kiểu POST lên server:
curl -v -XPOST 10.190.201.95:8181/hello -H 'Content-Type: application/json' --data '{"content":"congpc"}'
Màn hình Terminal sẽ hiển thị như sau:


Console sẽ hiển thị:

Gởi request lên server bằng ứng dụng trên iOS dùng thư viện Alamofire:

Giả sử mình viết 1 ứng dụng có 2 nút button để gởi 2 loại request lên server với đoạn code như sau:
Sau khi gọi nhấn 2 button sẽ hiển thị kết quả từ server trả về lên 2 label:

Console sẽ sinh log như sau:

Thiết lập với cơ sở dữ liệu MySql:

- Bạn cần cài MySql với tại đường dẫn và làm theo hướng dẫn của trang MySql.
- Bạn có thể tải MySql Workbench để thao tác trên GUI cho dễ.
- Tại Framework của server bạn thêm project MySql vào workspace và link framework đó vào Tutorials project:

Những database khác có thể làm tương tự như MongoDB, PostgreSQL.

Sau đó khai báo những thông số kết nối đến MySql, chi tiết mình có để trong code cũng như trên GitHub:


Các bạn có thể lấy toàn bộ source code của mình tại GitHub

Tài liệu tham khảo:

- Creating a Web Service for Your App in Swift with Perfect.
- Integrate MySQL Into a Swift Perfect Web Server.

Comments


  1. Đại phát viễn thông chuyên thay màn hình iphone tại hcm:
    ----------------------------------------------------
    Giá rẻ nhất-chất lượng tốt nhất – Xem ngay bảng thay màn hình iphone tại đây:
    Web: thay màn hình iphone
    ( Xem tai day): thay màn hình iphone
    ( xem tai day ): thay man hinh iphone

    ReplyDelete

Post a Comment

Popular posts from this blog

Phân biệt biến kiểu Property, Public, Protected, Private trong ngôn ngữ Objective C

- Theo kinh nghiệm làm việc của mình với các bạn trong nhóm khi lập trình Objective-C và cũng đọc qua code của những project cũ. Ít khi nào mọi người để ý và khai báo đúng với ý đồ của từng đối tượng, và vi phạm quy tắc tính đóng gói, tính bảo mật thông tin của đối tượng trong lập trình hướng đối tượng (Tham khảo lý thuyết Lập trình hướng đối tượng tại trang Wiki ). - Theo ngôn ngữ lập trình Java, người ta khuyến khích mỗi khi dùng biến kiểu public thì nên đặt 1 biến private và hỗ trợ những hàm getter/setter để truy suất biến private đó.     + Nguyên nhân họ nói là đảm bảo tính đóng gói, và nếu sau này có thay đổi gì trên biến đó bạn có thể sửa được dễ dàng, chi tiết về vấn đề này ở đây .     + Nói tóm tại thì nguyên nhân chính là có thể kiểm soát được truy xuất đến giá trị của 1 đối tượng từ bên ngoài, có thể dễ dàng mở rộng code bằng cách override lại những hàm getter/setter. - Các bạn có thể áp dụng nguyên tắc đó từ bên Java qua ngôn ngữ lập trình Object...

(Kinh nghiệm) Auto layout và Size classes trong iOS - Phần 1

Trước đây khi viết những ứng dụng chạy trên nhiều màn hình hoặc hỗ trợ màn hình xoay ngang, xoay dọc mọi người hay dùng code để có thể chỉnh được những vị trí cũng như kích thước của những đối tượng. Hoặc có thể dùng Autosizing để tự động canh chỉnh những đối tượng nhưng không tối ưu và tiện lợi cho lắm, hình minh hoạ ở dưới: Vì thế từ lúc Apple phát hành ra iPhone 5, iPhone 5s với kích thước màn hình là 4 inch, làm phát sinh thêm vấn đề " Làm thế nào ta có thể thiết kế giao diện có thể chạy được trên nhiều màn hình? " mà không làm thay đổi nhiều code để có thể dễ dàng bảo trì ứng dụng. Apple mới phát triển chức năng Auto Layout và Size Classes để thực hiện nhiệm vụ này. Nếu bạn đã quen dùng Autosizing để thiết kế giao diện thì bạn có thể vẫn sử dụng chúng. Nhưng tuỳ theo từng dự án mà khách hàng hay người PM hoặc leader của bạn muốn bạn dùng công nghệ mới Auto Layout và Size Classes   để làm layout trên iOS mà không cần dùng bất cứ đoạn code nào và chỉ viết trên 1 storyboard...

(Căn bản) Bài 1: Hướng dẫn tạo tài khoản Apple ID và iTune không cần thẻ Visa hoặc MasterCard

Nếu bạn muốn lập trình trên iOs hoặc trên MacOs thì bạn nên có tài khoản Apple ID và tài khoản iTune. Sẽ hữa ích cho bạn khi cài đặt và nân cấp chương trình XCode. Nhưng khó khăn ở chỗ nếu bạn không có thẻ Visa hoặc Master Card, mà vẫn muốn có tài khoản để có thể cài ứng dụng trên AppStore. Sau đây mình xin hướng dẫn cách tạo tài khoản mà không cần những thẻ đó và có thể tạo tài khoản trên những store ở các nước khác. Đầu tiên bạn mở chương trình iTune lên và vào tab "App Store", sau đó bạn kiếm chương trình nào Free và nhấn vào đó nó sẽ hiển thị ra màn hình như sau:    Khi đang ở màn hình này bạn nhấn vào chữ "Free" bên dưới hình sẽ hiển thị ô cho bạn nhập Apple ID và Password.Vì bạn chưa có nên hãy nhấn vào nút "Create Apple ID" để tạo tài khoản. Sau khi bạn nhấn vào nút "Create Apple ID" bạn sẽ qua màn hình như bên dưới. Tại đây bạn có thể chuyển AppStore của các nước (Vì có những chương trình chỉ cài được trên từng AppStore mỗi nước thôi) hi...