Tìm hiểu API Resource trong Laravel

Tram Ho

Giới thiệu

  • API (Application Programming Interface) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác và cho phép dữ liệu có thể được trao đổi qua lại giữa chúng thông qua các phương thức GET, POST, PUT, DELETE, PATCH.
  • Khi khi dựng một API, bạn cần chuyển đổi dữ liệu Eloquent model và JSON được trả về bởi ứng dụng của người dùng. Lớp Laravel resource cho phép bạn chuyển đổi dễ dàng giửa model và model collection trong JSON.

Tạo Resource

  • Để tạo một lớp resorce, bạn có thể sử dụng cửa sổ lệnh Artisan VD: php artisan make:resource Product.
  • Mặc định, resource sẽ được sinh ra trong thư mục app/Http/Resource trong project của bạn. Resource sử dụng lớp IlluminateHttpResourceJsonJsonResource.

Resource Collections

  • Ngoài việc tạo resource và chuyển đổi models, resource có thể chuyển đổi các collection của model. Điều này cho phép dữ liệu trả về bao gồm các liên kết liên quan đến collection của resource.
  • Để tạo một resource collection, bạn nên sử dụng tham số --collection ở cuối câu lệnh tạo resource. Hoặc có thể thể thêm hậu tố Collection sau tên resource, collection resource sử dụng lớp IlluminateHttpResourceJsonResourceCollection.

Lớp JsonResource

  • Một lớp resource đại diện cho một model cần được chuyển đổi trong một cấu trúc JSON.
  • Tạo lớp resource Product php artisan make:resource Product

  • Mỗi một lớp resource định nghĩa sẵn phương thức toArray trả về một mảng thuộc tính của đối tượng nên được chuyển đổi thành JSON khi gửi phản hổi response.
  • Chúng ta có thể truy cập thuộc tính của model thông biến $this.

Resource Collections

  • Nếu bạn muốn trả về một collection của resource hoặc một paginate, bạn có thể sử dụng phương thức collection khi tạo một thể hiện resource trong route hoặc controller.

  • Chú ý VD trên không cho phép bổ sung dữ liệu nào khi được trả về với collection. Nếu muốn bổ sung resource, bạn cần tạo một Collection

  • Sau khi định nghĩa resource collection, nó có thể được gọi ở route hoặc controller.

  • Khi trả về resource collection từ một route.
  • Thuộc tính $preserveKey cho phép bạn biết các khóa collection có được giữ nguyên không public $preserveKeys = true;
  • Thuộc tính $collects cho phép bạn thay đổi mapping mặc định của Collection

Tài liệu tham khảo

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo