Laravel 29 :Sử dụng RESTful API Resources Để Viết API

0
753

Ngày nay, WEB API là một yêu cầu hết sức cơ bản trong bất kỳ một trang web phổ biến nào. Vì vậy hôm nay mình sẽ cùng tìm hiểu để xây dựng một API đúng chuẩn RESTful trong PHP thông qua framework Laravel.

Vì sao lại chọn framework Laravel

Laravel hiện nay là một framework PHP được ưa thích nhất hiện nay và được hỗ trợ rất mạnh mẽ từ nhà phát triển. Laravel được xây dựng trên một cơ sở vững chắc là Symfony nhưng lại được tích hợp thêm rất nhiều thành phần mạnh mẽ như “templating engine, ORM, command line Artisan”.

Cài đặt

Cài đặt Laravel bạn có thể sử dụng Composer, một trình quản lý các thư viện được ưa chuộng với dev PHP. Mọi tài liệu hướng dẫn cài đặt Laravel tại: Hướng dẫn.

Bắt đầu

Để bắt đầu, chúng ta tạo một đối tượng cơ bản là Article. Article là một đối tượng cơ bản gồm có title, body. Laravel cung cấp một số lệnh thông qua Artisan(Laravel’s command line tool), nó sẽ hỗ trợ chúng ta đặt file đúng theo quy định. Để tạo chúng ta chạy lệnh:

$ php artisan make:model Article -m

-m là viết tắt của -migration và nó nói rằng Artisan tạo cho chúng ta một model. Và đây là kết quả:

 

Chúng ta thấy rằng:

up() vs down: là 2 function sẽ chạy khi migrate và khi rollback. $table->increments('id'): thiết lập đối tượng id là một số nguyên tự tăng. $table->timestamps(): sẽ tạo cho chúng ta một đối tượng thời gian là ngày tạo và ngày update đối tượng. Schema::dropIfExists(): xóa bảng nếu như đã tồn tại. Theo đó, chúng ta sẽ thêm một số dòng vào method up():

 

Và chạy lệnh Aritans:

$ php artisan migrate

Mặc định laravel sẽ có 2 migrate để tạo 2 bảng là: create_users_table vs create_password_resets_table. Hỗ trợ người dùng tạo đối tượng user.

Bây giờ chúng ta sẽ thêm vào model đuối tượng Article thuộc tính $fillable các trường trong bảng articles hỗ trợ khi bạn dùng Article::create vs Article::update.

Tạo dữ liệu mẫu(File Seeding)

Seeding: hỗ trỡ chúng ta tạo một dữ liệu mẫu, trong đó chúng ta sử dụng Faker.

$ php artisan make:seeder ArticlesTableSeeder

 

Để tạo dữ liệu từ file seed:

$ php artisan db:seed --class=ArticlesTableSeeder

Lặp lại quy trình trên với User:

 

Để đơn giản cho mỗi lần tạo seed, chúng ta thêm vào file DatabaseSeeder với nội dung:

 

Và đơn giản hơn, chúng ta chỉ cần chạy:

$ php artisan db:seed

thay vì chạy 2 lệnh: $ php artisan db:seed --class=ArticlesTableSeeder vs $ php artisan db:seed --class=UsersTableSeeder.

Routes and Controllers

Routes

Chúng ta tạo một số action cơ bản sau: create, retrieve the list, retrieve a single one, update, and delete(CRUD). trong file: routes/api.php.

 

Các routes trong api.php sẽ bắt đầu với prefix: /api/. Nếu bạn muốn sửa prefix thì có thẻ sửa tại: RouteServiceProvider(/app/Providers/RouteServiceProvider.php).

Controller

$ php artisan make:controller ArticleController.

Tại file routes/api.php chúng ta sửa lại theo controller:

 

Hoặc chúng ta có thể cải thiện cấu trúc file để khi trả về trong mỗi hành động là kèm theo một response status. Mặc định khi có lỗi xảy ra chúng ta sẽ nhận được một response status: 404.

 

Ý nghĩa của mỗi response status trong HTTP:

  • 200: Ok. Mã cơ bản có ý nghĩa là thành công trong hoạt động.
  • 201: Đối tượng được tạo, được dùng trong hàm store.
  • 204: Không có nội dung trả về. Hoàn thành hoạt động nhưng sẽ không trả về nội dung gì.
  • 206: Trả lại một phần nội dung, dùng khi sử dụng phân trang.
  • 400: Lỗi. Đây là lỗi cơ bản khi không vượt qua được xác nhận yêu cầu từ server.
  • 401: Unauthorized. Lỗi do yêu cầu authen.
  • 403: Forbidden. Lõi này người dùng vượt qua authen, nhưng không có quyền truy cập.
  • 404: Not found. Không tìm thấy yêu cầu tương tứng.
  • 500: Internal server error.
  • 503: Service unavailable.

Chúc mọi người học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây