Với các bạn làm dự án mà yêu cầu chạy trên môi trường web và app …, để đồng bộ hóa dữ liệu thì chúng ta sẽ cần xây dựng Api cho dự án của mình. Bài viết này mình sẽ hướng dẫn mọi người xây dựng API đúng chuẩn RESTful với framework Laravel version 5.7, vì sử dụng framework Laravel nên mọi người nên tìm hiểu cơ bản về laravel trước khi đọc bài viết.
Laravel api
Api laravel
RESTful hoạt động dựa trên http với hoạt động request từ xa đến server để thực hiện lấy, thêm,xóa , sửa dữ liệu. Với Restful, dạng dữ liệu trao đổi giữa client/server là JSON hoặc XML, nhưng JSON thường được dùng hơn. Để triển khai Restful API trong Laravel, bạn cần dùng một công cụ seo để test, đó là Postman.
Khi request đến một API server, Bạn sẽ nhận được status code trả về, giá trị của status cho biết kết quả của request. Sau đây là một số giá trị status thường gặp:
- 200 OK – thành công, dùng cho các phương thức GET, PUT, PATCH, DELETE.
- 201 Created – Trả về khi resouce được tạo thành công.204 No Content – Trả về khi resource xoá thành công. 304 Not Modified – Client có thể sử dụng dữ liệu cache.
- 400 Bad Request – Request không hợp lệ
- 401 Unauthorized – Request cần phải có auth.
- 403 Forbidden – bị từ chối không cho phép.
- 404 Not Found – Không tìm thấy resource từ URI
- 405 Method Not Allowed – Phương thức bị cấm với user hiện tại.
- 429 Too Many Requests – Request bị từ chối do bị giới hạn
Sau đây là những việc bạn cần thực hiện khi muốn triển khai Restful API trong Laravel cho mục đích quản trị dữ liệu từ xa:
- Tạo table để chứa dữ liệu cho thiết kế web nếu chưa tạo (Product)
- Tạo model (Product) và khai báo các field trong model
- Tạo Eloquent resource để transform data
- Tạo Controller resource chứa các action CRUD resource
- Tạo các route api dẫn vào các action trong controller
- Viết code cho chức năng thêm resource và test
- Viết code cho chức năng sửa resource và test
- Viết code cho hiện danh sách resource và test
- Viết code xóa 1 resource và test
- Viết code hiện chi tiết 1 resource và test1
Laravel authentication api
Tạo table trong database để chứa dữ liệu laravel transaction (product)
- Chạy lệnh sau để tạo migration:
php artisan make:migration create_products_table - Khai báo các field trong file migration mới tạo
public function up() {
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('price');
$table->timestamps();
});
}
Sau khi tạo table, bạn cần tạo model Eloquent để tương tác với table:
- Chạy lệnh sau để tạo model:
php artisan make:model Product - Khai báo các field trong file model mới tạo:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model {
use HasFactory;
protected $fillable = ['name', 'price'];
}
Tạo route là việc quan trọng khi tạo Restful API trong Laravel. Mục đích của tạo route là để có các path đưa user đến các action trong controller đã tạo ở trên. Để tạo các route api, bạn mở file routes/api.php lên để định nghĩa nhé.
Khi user thực hiện request đến các route này, phải có thêm prefix là api, (có thể đổi trong app\Providers\RouteServiceProvider.php)
Định nghĩa route trong api.php có 2 cách:
Cách 1: Khai báo route với 1 method cụ thể (get, post), route (sp), action (index, store). Ví dụ:
use App\Http\Controllers\ProductController;
Route::get('sp', [ProductController::class, 'index']);
Route::post('sp', [ProductController::class, 'store']);
Cách 2: Khai báo route với lệnh Route::resource để dùng chung route cho các method get, post, put, delete dẫn vào các action của controller
Route::resource(‘products’, ProductController::class);
Lệnh trên tạo ra các route dẫn vào các action như sau: