Với sự gia tăng của phát triển phần mềm mobile và JavaScript, sử dụng API RESTful là lựa chọn tốt nhất để xây dựng một giao diện duy nhất giữa dữ liệu của bạn và khách hàng của bạn.
Tuyển dụng
Chúng tôi đang tìm cộng tác viên Tuyển lập trình viên Có thể làm việc tại nhà. Liên hệ
Laravel là một framework PHP rất đơn giản, đa dạng và có thể hỗ trợ người lập trình tiết kiệm được rất nhiều thời gian với các sự tiện dụng thông qua các cấu hình. Framework này cũng nhằm mục đích phát triển với web và đã kết hợp nhiều tính năng và ý tưởng mới trong thế giới phát triển web - chẳng hạn như hàng đợi công việc, xác thực API, giao tiếp trong thời gian thực và nhiều hơn nữa.
Trong bài này, chúng ta sẽ khám phá những cách bạn có thể xây dựng và thử nghiệm một API mạnh mẽ sử dụng Laravel framework 5.4 với API authenticate (token) trong phát triển phần mềm Mobile.
Phần mềm yêu cầu cho bài tutorial này là
- xampp v3.2.2
1. Restful Api là gì?
Trước tiên, chúng ta cần phải hiểu chính xác những gì được coi là một RESTful API. REST là viết tắt của Reppresentational State Transfer và được dùng để giao tiếp mạng giữa các ứng dụng dựa trên giao thức không trạng thái (thường là HTTP). Các dạng HTTP thường dùng
- GET : truy xuất dữ liệu
- POST : tạo mới dữ liệu
- PUT : cập nhật dữ liệu
- DELETE : xóa dữ liệu
Trong đó, dữ liệu sẽ là mục tiêu của các hành động trong hệ thống, và trong bài viết này dữ liệu chúng ta sẽ là Todo
Giải pháp là ta sẽ dùng các ứng dụng hoặc framework để chạy test sản phẩm của ta một cách tự động. Giống như một con robot sử dụng app của ta theo kịch bản đã được định sẳn.
Có nhiều phần mềm, framework để automation test trên tất cả các platform, web, iOS, Android…
2. Thiết lập project
Mở command line (Ctrl + R, cmd), gõ vào câu lệnh
với "5.4" để lấy đúng Laravel framework 5.4, sau đó bạn sẽ đợi đến khi process finished.
Sau khi tạo xong project, chúng ta sẽ có 2 options để truy xuất vào trang web.
- Truy xuất thông qua localhost, http://localhost/TodoApp/public
- Thiết lập vhost trong xampp va host trong window system thông qua host: http://todoapp.dev
Trong bài viết này, chúng ta sẽ truy xuất thông qua option 1. http://localhost/TodoApp/public
3. Tạo models và database
Để tạo models, chúng ta run câu lệnh > php artisan make:model Todo -m (thuộc tính -m để laravel tự động tạo migration table thông qua artisan)
Trong todos table, chúng ta sẽ tạo những property sau, ở đây mình chỉ thêm 2 field là name va description, các bạn có thể tùy thích thêm các property.
Và trong Todo Model bạn sẽ thêm biến $fillable để hỗ trợ save và update trong laravel.
Để set up api token cho RestApi chúng ta sẽ edit User table property
Chúng ta sẽ remove remember_token field và add new column api_token, column này sẽ được dùng để xác thực Api call từ mobile, lý do mình đặt name la api_token vì đây là default property được hỗ trợ bởi laravel framework
Mặc định Laravel framework create 2 default table la User va Password Reset, trong tutorials này mình chỉ dùng User table, nên bạn cũng có thể remove Password Reset table.
Sau khi update lại property trong User table va Todo Table, bạn cần sẽ thiết lập database environment cho project, bạn sẽ mở field .env và change các property sau
Ở đây, mặc định username của mình la root (default user của xampp). Sau đó, bạn cần phải tạo database schema trong phpmyadmin là todo_db.
Vậy là đã gần xong các bước chuẩn bị. Bây giờ bạn có thể mở command line để run câu lệnh
Với Laravel framework 5.4, nếu bạn gặp issued với migrate, đừng lo lắng mình sẽ chỉ bạn cách fix, và nếu bạn muốn tìm hiểu thêm về issued này, bạn có thể tìm hiểu thêm tại đây https://laravel-news.com/laravel-5-4-key-too-long-error
Đầu tiên bạn sẽ search trong phpStorm tập tin AppServiceProvider. Trong function boot bạn sẽ add: Schema::defaultStringLength(191).
Bây giờ, bạn sẽ run lại commands > php artisan migrate. Và done, xin chúc mừng bạn đã hoàn thành xong phần thiết lập project Laravel Rest Api.
4. Tạo controller và api
Mở command line và run câu lệnh > php artisan make:controller ToDoController, sau khi xong, bạn sẽ có được cấu trúc sau trong php storm
Sau khi tạo xong ToDoController, chúng ta sẽ bắt đầu viết API đầu tiên để lấy 1 list Todo data. (Bạn có thể dùng php admin để tạo demo data cho Todo table).
Thêm vào app/route/api.php function getTodoList
Trong TodoController class, bạn sẽ thêm vào hàm getList
Vậy là bạn đã hoàn thành xong phần viết rest api với laravel framework, thực đơn giản phải không bạn? Nhưng làm sao bạn có thể bảo mật được data với rest api call với phần mềm mobile? Làm sao để bạn có thể đảm bảo sẽ không bị mất dữ liệu khi giao tiếp giữa mobile và Rest Api? Làm sao để người khác không có thể lấy được data của bạn thông qua Api?
5. Thêm Api token vào trong Api Call
Các bước tiếp theo sau đây sẽ giúp bạn bảo mật được rest Api call thông qua token. Mặc định Laravel framework sẽ không hỗ trợ bạn với rest Api, nhưng bạn sẽ có thể dễ dàng config lại chúng.
Đầu tiên, bạn sẽ tạo 1 user bằng phpmyadmin với api_token data. (trong tutorial nàyapi_token default của mình là 1111111). Laravel framework sẽ sử dụng data trong user table để secure rest api call của bạn thông quan api_token. (Bạn cũng có thể custom api token đên table khác, mình sẽ để cập đến trong 1 tutorial khác)
Bạn sẽ thêm sửa lại guard trong config/auth từ 'web' thành 'api'. (Default của laravel framework sẽ hỗ trợ bạn secure thông qua web).
Tiếp theo, bạn sẽ thêm middleware vào trong routes/api.php.
Vậy là done, bạn có 2 cách để call rest api với token.
- Với api call, bạn sẽ thêm vào api_token={token} vào cuối api call> http://localhost/TodoApp/public/api/getTodoList?api_token=1111111
- Bạn có thể dùng header> Authorization = Bearer 1111111
- Kiểm tra version bằng lệnh: node -v
Vậy là bây giờ bạn đã bảo mật được rest Api call của mình với mobile, nhưng mặc định với unauthorize call, laravel sẽ trả về login page của web (mặc định sẽ không có sẵn trong framework) nên bạn sẽ gặp issued này.
Mở file app/Exceptions/Handler.php, bạn sẽ sửa hàm unauthenticate trả vể lỗi 404 thay vì trả về login page.
Hoàn thành build nhanh server Api cho mobile với Laravel Framwork 5.4