API sử dụng resource trong Laravel
1. Mở đầu
Vấn đề: Để thực hiện các thao tác CRUD 1 resource có nhiều cách xây dựng và để tạo thuận lợi cho việc tái sử dụng thì phải có các tiêu chuẩn chung. Các tiêu chuẩn này (hay còn được gọi là Web API hoặc HTTP API) quy định một cách thống nhất việc quản lý các resource của web. RESTful là một trong số đó. Chúng ta sẽ cùng nhau đi tìm hiểu về RESTful cũng như ứng dụng của nó trong Laravel.
2. RESTful API là gì?
- REST (Representational State Transfer): là một loạt hướng dẫn và dạng cấu trúc dùng cho việc chuyển đổi dữ liệu dựa trên giao thức không trạng thái ( thường là HTTP) để tương tác
- API (Application Programming Interface) : phương thức kết nối với các thư viện và ứng dụng khác=> Vậy RESTful API là những API đi theo cấu trúc REST.
3. HTTP method theo chuẩn RESTful API:
- GET : truy xuất tài nguyên (READ)
- POST : tạo tài nguyên mới ( CREATE)
- PUT / PATCH: cập nhật, sửa đổi tài nguyên (UPDATE)
- DELETE : xóa tài nguyên ( DELETE)
4. RESTful API trong Laravel:
- Các route theo chuẩn RESTful API được viết trong file routes/api.phpVí dụ nhanh:Kết quả: test với route http://127.0.0.1:8000/api/users với method GET để lấy ra toàn bộ UserNhận xét: Dữ liệu trả về dưới dạng JSON.
- Laravel cung cấp route resource để xây dựng RESTful API.
- Lệnh artisan tạo REST controller:
php artisan make:controller controller_name --resource
Lúc này, controller vừa tạo sẽ tự động render ra các phương thức:
METHOD | Ý NGHĨA |
---|---|
index() | Hiển thị danh sách tài nguyên |
create() | Thêm mới |
store() | Lưu trữ 1 tài nguyên mới |
show($id) | Hiển thị 1 tài nguyên theo tham số truyền vào |
edit($id) | Sửa 1 tài nguyên theo tham số truyền vào |
update(Request $quest, $id) | Cập nhật 1 tài nguyên theo tham số truyền vào |
destroy($id) | Xóa 1 tài nguyên theo tham số truyền vào |
Ví dụ:
Trong Laravel ta có thể gom các route này bằng 1 câu duy nhất:
Route::resource('users', 'Admin\UserController);
4.1 Method index() trong Controller:
Test route: http://127.0.0.1:8000/api/users/ với phương thức GET
4.2 Method store() trong Controller:
Test route: http://127.0.0.1:8000/api/users/ với phương thức POST
4.3 Method update() trong Controller:
Test route: http://127.0.0.1:8000/api/users/ với phương thức PUT
Đây là bài viết mình tìm hiểu tại: https://viblo.asia/p/restful-api-trong-laravel-cho-nguoi-moi-bat-dau-ByEZkNaqKQ0
Như bạn thấy ở trên tác giả đã sử dụng phần mềm postman. Vậy postman là gì?
5. Postman
5.1 Tìm hiểu Postman
Postman là một công cụ để test API.
Ưu điểm:
– Dễ sử dụng, hỗ trợ cả chạy bằng UI và non-UI. – Hỗ trợ viết code cho assert tự động bằng Javascript. – Hỗ trợ cả RESTful services và SOAP services. – Có chức năng tạo API document.
Nhược điểm:
– Những bản tính phí mới hỗ trợ những tính năng advance: Làm việc theo team, support trực tiếp…
5.2 Cài đặt
- Lên trang chủ của postman để download: https://www.getpostman.com/
- Hiện có các phiên bản cho MAC, Windows và Linux.
- Sau khi tải về, tiến hành chạy file cài đặt. Sau khi cài đặt hoàn tất ta được giao diện khi mở Postman như hình dưới đây:
5.3 Các thành phần chính của Postman
Settings: chứa các thông tin về cài đặt chung.
- Thông tin Account: dùng để Login, logout và sync data.
- Settings tùy chỉnh: themes, shortcut, format…
- Import data từ ngoài vào
Collections: Lưu trữ thông tin của các API theo folder hoặc theo thời gian.
API content: Hiển thị nội dung chi tiết API và các phần hỗ trợ giúp thực hiện test API. Đây là phần mà tester phải làm việc nhiều nhất.
Trong phần này gồm có 3 thành phần chính:
- Enviroments: Chứa các thông tin môi trường.
- Request: Phần chứa các thông tin chính của API. (URL, Method, Headers và Body)
- Reponse: Chứa các thông tin trả về sau khi Send Request.
5.4 Ví dụ
Khi làm việc với API, chúng ta chỉ làm việc với 2 dạng API chính là GET và POST.
– GET: Yêu cầu server đưa lại resource:Có thể hình dung hi bạn vào facebook, hay vuốt new feeds. – POST: Yêu cầu server cho tạo ra 1 resource mới. Sau đây mình sẽ trình cách cách tạo request với phương thức GET và POST với ví dụ cụ thể
5.4.1 Tạo request GET
Chúng ta sẽ dùng luôn API mẫu sẵn có mà Postman đã cung cấp
- URL: https://postman-echo.com/get
- Method: GET
- Headers: Không cần điền gì cả
- Body: Phương thức GET không có body, nhưng cần phải điền tham số vào Params
Dưới đây mình điền với key là test và value là 12345:
Sau khi điền đầy đủ thông tin thì ấn SEND để gửi request và chờ response trả về.
Thông tin trả về cần quan tâm:
- Định dạng dữ liệu trả về: thông thường là json và nên để chế độ Pretty để cho dễ nhìn.
- Nội dung dữ liệu: Đây là phần cần phải kiểm tra. – Bạn so sánh với cái Sample Response ở API docs để xem cấu trúc trả về đã đúng hay chưa. – Value của từng key đã đúng chưa, so sánh với nội dung trong DB. (không có DB là ko làm được API testing).
- Trạng thái của API (status) và thời gian trả về. Thời gian chạy API bằng Postman luôn ngắn hơn thời gian test trên giao diện Mobile vì nhiều lý do: đường truyền internet ở máy tính ổn định hơn wifi, và sau khi nhận response thì Mobile phải chạy code khởi tạo giao diện để hiển thị.
5.4.2 Tạo request POST
Tương tự như phần GET, chỉ khác là chúng ta cần điền thêm tham số vào trong body.
Bài viết postman này mình tìm hiểu trên trang: https://viblo.asia/p/api-testing-su-dung-postman-gGJ592JrKX2
Kết Luận
Như vậy, qua bài này thì resource thật là đơn giản và API tiện lợi hơn khi có công cụ hỗ trợ là Postman phải không nào. Bài viết sau mình sẽ hướng dẫn các bạn xử lý đa ngôn ngữ trong laravel nhé.