Việc sử dụng API JSON của Laravel là gì?

Khi xây dựng API, bạn có thể cần một lớp chuyển đổi nằm giữa các mô hình Eloquent của bạn và các phản hồi JSON thực sự được trả về cho người dùng ứng dụng của bạn. Ví dụ: bạn có thể muốn hiển thị các thuộc tính nhất định cho một nhóm người dùng chứ không phải những người khác hoặc bạn có thể muốn luôn bao gồm các mối quan hệ nhất định trong biểu diễn JSON của các mô hình của mình. Các lớp tài nguyên của Eloquent cho phép bạn chuyển đổi các mô hình và bộ sưu tập mô hình của mình thành JSON một cách rõ ràng và dễ dàng

Tất nhiên, bạn luôn có thể chuyển đổi các mô hình hoặc bộ sưu tập Eloquent thành JSON bằng các phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

0 của chúng;

Tạo tài nguyên

Để tạo một lớp tài nguyên, bạn có thể sử dụng lệnh Artisan

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

1. Theo mặc định, tài nguyên sẽ được đặt trong thư mục

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

2 của ứng dụng của bạn. Tài nguyên mở rộng lớp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3

php artisan make:resource UserResource

Bộ sưu tập tài nguyên

Ngoài việc tạo các tài nguyên chuyển đổi các mô hình riêng lẻ, bạn có thể tạo các tài nguyên chịu trách nhiệm chuyển đổi các bộ sưu tập mô hình. Điều này cho phép các phản hồi JSON của bạn bao gồm các liên kết và thông tin meta khác có liên quan đến toàn bộ bộ sưu tập của một tài nguyên nhất định

Để tạo một bộ sưu tập tài nguyên, bạn nên sử dụng cờ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

4 khi tạo tài nguyên. Hoặc, bao gồm từ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

5 trong tên tài nguyên sẽ cho Laravel biết rằng nó sẽ tạo một tài nguyên bộ sưu tập. Tài nguyên bộ sưu tập mở rộng lớp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

6

________số 8

Khái niệm tổng quan

Lưu ý
Đây là tổng quan cấp cao về tài nguyên và bộ sưu tập tài nguyên. Bạn nên đọc các phần khác của tài liệu này để hiểu sâu hơn về tùy chỉnh và sức mạnh mà tài nguyên cung cấp cho bạn.

Trước khi đi sâu vào tất cả các tùy chọn có sẵn cho bạn khi viết tài nguyên, trước tiên chúng ta hãy xem xét kỹ cách sử dụng tài nguyên trong Laravel. Một lớp tài nguyên đại diện cho một mô hình duy nhất cần được chuyển đổi thành cấu trúc JSON. Ví dụ, đây là một lớp tài nguyên

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

7 đơn giản

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

0

Mỗi lớp tài nguyên định nghĩa một phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8 trả về mảng các thuộc tính sẽ được chuyển đổi thành JSON khi tài nguyên được trả về dưới dạng phản hồi từ một tuyến hoặc phương thức điều khiển

Lưu ý rằng chúng ta có thể truy cập các thuộc tính mô hình trực tiếp từ biến

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

9. Điều này là do một lớp tài nguyên sẽ tự động ủy quyền quyền truy cập thuộc tính và phương thức xuống mô hình bên dưới để truy cập thuận tiện. Khi tài nguyên được xác định, nó có thể được trả về từ một tuyến đường hoặc bộ điều khiển. Tài nguyên chấp nhận thể hiện mô hình cơ bản thông qua hàm tạo của nó

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3

Bộ sưu tập tài nguyên

Nếu bạn đang trả về một bộ sưu tập tài nguyên hoặc phản hồi được phân trang, bạn nên sử dụng phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

40 do lớp tài nguyên của bạn cung cấp khi tạo phiên bản tài nguyên trong tuyến hoặc bộ điều khiển của bạn

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

Lưu ý rằng điều này không cho phép bổ sung bất kỳ dữ liệu meta tùy chỉnh nào có thể cần được trả lại cùng với bộ sưu tập của bạn. Nếu bạn muốn tùy chỉnh phản hồi của bộ sưu tập tài nguyên, bạn có thể tạo một tài nguyên chuyên dụng để đại diện cho bộ sưu tập

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

4

Khi lớp tập hợp tài nguyên đã được tạo, bạn có thể dễ dàng xác định bất kỳ dữ liệu meta nào sẽ được đưa vào phản hồi

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

7

Sau khi xác định bộ sưu tập tài nguyên của bạn, nó có thể được trả về từ một tuyến đường hoặc bộ điều khiển

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8

Bảo quản khóa bộ sưu tập

Khi trả về một bộ sưu tập tài nguyên từ một tuyến đường, Laravel đặt lại các khóa của bộ sưu tập để chúng theo thứ tự số. Tuy nhiên, bạn có thể thêm một thuộc tính

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

41 vào lớp tài nguyên của mình để cho biết liệu các khóa gốc của bộ sưu tập có nên được giữ nguyên hay không

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

0

Khi thuộc tính

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

41 được đặt thành

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

43, khóa bộ sưu tập sẽ được giữ nguyên khi bộ sưu tập được trả về từ một tuyến đường hoặc bộ điều khiển

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3

Tùy chỉnh lớp tài nguyên cơ bản

Thông thường, thuộc tính

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

44 của bộ sưu tập tài nguyên được điền tự động với kết quả của việc ánh xạ từng mục của bộ sưu tập tới lớp tài nguyên duy nhất của nó. Lớp tài nguyên số ít được coi là tên lớp của bộ sưu tập mà không có phần

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

5 ở cuối tên lớp. Ngoài ra, tùy thuộc vào sở thích cá nhân của bạn, lớp tài nguyên số ít có thể có hoặc không có hậu tố

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

46

Ví dụ:

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

47 sẽ cố gắng ánh xạ các phiên bản người dùng đã cho vào tài nguyên

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

7. Để tùy chỉnh hành vi này, bạn có thể ghi đè lên thuộc tính

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

49 của bộ sưu tập tài nguyên của mình

php artisan make:resource User --collection

php artisan make:resource UserCollection

0

Tài nguyên viết

Lưu ý
Nếu bạn chưa đọc , bạn nên đọc trước khi tiếp tục với tài liệu này.

Về bản chất, tài nguyên rất đơn giản. Họ chỉ cần chuyển đổi một mô hình nhất định thành một mảng. Vì vậy, mỗi tài nguyên chứa một phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8 dịch các thuộc tính của mô hình của bạn thành một mảng thân thiện với API có thể được trả về từ các tuyến hoặc bộ điều khiển của ứng dụng của bạn

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

0

Khi một tài nguyên đã được xác định, nó có thể được trả về trực tiếp từ một tuyến đường hoặc bộ điều khiển

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3

Các mối quan hệ

Nếu bạn muốn bao gồm các tài nguyên liên quan trong phản hồi của mình, bạn có thể thêm chúng vào mảng được trả về bởi phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8 của tài nguyên của bạn. Trong ví dụ này, chúng tôi sẽ sử dụng phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

40 của tài nguyên

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

72 để thêm các bài đăng trên blog của người dùng vào phản hồi của tài nguyên

php artisan make:resource User --collection

php artisan make:resource UserCollection

3

Lưu ý
Nếu bạn chỉ muốn bao gồm các mối quan hệ khi chúng đã được tải, hãy xem tài liệu trên.

Bộ sưu tập tài nguyên

Trong khi các tài nguyên chuyển đổi một mô hình đơn lẻ thành một mảng, thì các bộ sưu tập tài nguyên chuyển đổi một tập hợp các mô hình thành một mảng. Tuy nhiên, không nhất thiết phải xác định lớp tập hợp tài nguyên cho từng mô hình của bạn vì tất cả các tài nguyên đều cung cấp phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

40 để tạo tập hợp tài nguyên "đặc biệt" một cách nhanh chóng

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

Tuy nhiên, nếu bạn cần tùy chỉnh siêu dữ liệu được trả về cùng với bộ sưu tập, bạn cần xác định bộ sưu tập tài nguyên của riêng mình

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

7

Giống như các tài nguyên đơn lẻ, các bộ sưu tập tài nguyên có thể được trả về trực tiếp từ các tuyến hoặc bộ điều khiển

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8

gói dữ liệu

Theo mặc định, tài nguyên ngoài cùng của bạn được bọc trong khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75 khi phản hồi tài nguyên được chuyển thành JSON. Vì vậy, ví dụ, một phản hồi thu thập tài nguyên điển hình trông giống như sau

php artisan make:resource User --collection

php artisan make:resource UserCollection

7

Nếu bạn muốn sử dụng khóa tùy chỉnh thay vì

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75, bạn có thể xác định thuộc tính

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

77 trên lớp tài nguyên

php artisan make:resource User --collection

php artisan make:resource UserCollection

8

Nếu bạn muốn vô hiệu hóa tính năng bao bọc của tài nguyên ngoài cùng, bạn nên gọi phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

78 trên lớp cơ sở

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3. Thông thường, bạn nên gọi phương thức này từ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

80 hoặc nhà cung cấp dịch vụ khác được tải theo mọi yêu cầu đối với ứng dụng của bạn

php artisan make:resource User --collection

php artisan make:resource UserCollection

9

Cảnh báo
Phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

78 chỉ ảnh hưởng đến phản hồi ngoài cùng và sẽ không xóa các khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75 mà bạn thêm vào bộ sưu tập tài nguyên của mình theo cách thủ công.

Gói tài nguyên lồng nhau

Bạn có toàn quyền quyết định cách các mối quan hệ của tài nguyên được bao bọc. Nếu bạn muốn tất cả các bộ sưu tập tài nguyên được bọc trong một khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75, bất kể chúng được lồng vào nhau như thế nào, thì bạn nên xác định một lớp bộ sưu tập tài nguyên cho từng tài nguyên và trả về bộ sưu tập trong một khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75

Bạn có thể tự hỏi liệu điều này có khiến tài nguyên ngoài cùng của bạn bị gói trong hai khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75 không. Đừng lo lắng, Laravel sẽ không bao giờ để tài nguyên của bạn vô tình bị double-wrapped, vì vậy bạn không cần phải lo lắng về mức độ lồng nhau của bộ sưu tập tài nguyên mà bạn đang chuyển đổi

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

00

Gói dữ liệu và phân trang

Khi trả về các bộ sưu tập được đánh số trang thông qua phản hồi tài nguyên, Laravel sẽ bọc dữ liệu tài nguyên của bạn trong khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

75 ngay cả khi phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

78 đã được gọi. Điều này là do các câu trả lời được phân trang luôn chứa các khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

88 và

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

89 với thông tin về trạng thái của người phân trang

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

01

phân trang

Bạn có thể chuyển một thể hiện của trình phân trang Laravel sang phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

40 của một tài nguyên hoặc một bộ sưu tập tài nguyên tùy chỉnh

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

02

Phản hồi được phân trang luôn chứa các khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

88 và

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

89 với thông tin về trạng thái của người phân trang

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

01

Thuộc tính có điều kiện

Đôi khi, bạn có thể chỉ muốn đưa một thuộc tính vào phản hồi tài nguyên nếu một điều kiện nhất định được đáp ứng. Ví dụ: bạn có thể chỉ muốn bao gồm một giá trị nếu người dùng hiện tại là "quản trị viên". Laravel cung cấp nhiều phương thức trợ giúp để hỗ trợ bạn trong tình huống này. Phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

03 có thể được sử dụng để thêm thuộc tính vào phản hồi tài nguyên một cách có điều kiện

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

04

Trong ví dụ này, khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

04 sẽ chỉ được trả về trong phản hồi tài nguyên cuối cùng nếu phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

05 của người dùng được xác thực trả về

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

43. Nếu phương thức trả về

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

07, khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

04 sẽ bị xóa khỏi phản hồi tài nguyên trước khi nó được gửi tới máy khách. Phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

03 cho phép bạn xác định rõ ràng các tài nguyên của mình mà không cần dùng đến các câu lệnh điều kiện khi xây dựng mảng

Phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

03 cũng chấp nhận một bao đóng làm đối số thứ hai, cho phép bạn tính toán giá trị kết quả chỉ khi điều kiện đã cho là

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

43

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

05

Ngoài ra, phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

32 có thể được sử dụng để bao gồm một thuộc tính trong phản hồi tài nguyên nếu thuộc tính không phải là null

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

06

Hợp nhất các thuộc tính có điều kiện

Đôi khi, bạn có thể có một số thuộc tính chỉ nên được đưa vào phản hồi tài nguyên dựa trên cùng một điều kiện. Trong trường hợp này, bạn có thể sử dụng phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

33 để chỉ bao gồm các thuộc tính trong phản hồi khi điều kiện đã cho là

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

43

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

07

Một lần nữa, nếu điều kiện đã cho là

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

07, các thuộc tính này sẽ bị xóa khỏi phản hồi của tài nguyên trước khi nó được gửi tới máy khách

Cảnh báo
Không nên sử dụng phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

33 trong các mảng kết hợp chuỗi và phím số. Hơn nữa, nó không nên được sử dụng trong các mảng có các phím số không được sắp xếp theo thứ tự.

Mối quan hệ có điều kiện

Ngoài các thuộc tính tải có điều kiện, bạn có thể đưa các mối quan hệ vào các phản hồi tài nguyên của mình một cách có điều kiện dựa trên việc liệu mối quan hệ đã được tải trên mô hình hay chưa. Điều này cho phép bộ điều khiển của bạn quyết định mối quan hệ nào sẽ được tải trên mô hình và tài nguyên của bạn chỉ có thể dễ dàng bao gồm chúng khi chúng thực sự đã được tải. Cuối cùng, điều này giúp tránh các sự cố truy vấn "N+1" trong tài nguyên của bạn dễ dàng hơn

Phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

37 có thể được sử dụng để tải một mối quan hệ có điều kiện. Để tránh tải các mối quan hệ không cần thiết, phương pháp này chấp nhận tên của mối quan hệ thay vì chính mối quan hệ đó

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

08

Trong ví dụ này, nếu mối quan hệ chưa được tải, khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

38 sẽ bị xóa khỏi phản hồi tài nguyên trước khi nó được gửi tới máy khách

Số lượng mối quan hệ có điều kiện

Ngoài việc bao gồm các mối quan hệ một cách có điều kiện, bạn có thể bao gồm "số lượng" mối quan hệ một cách có điều kiện vào các phản hồi tài nguyên của mình dựa trên việc số lượng của mối quan hệ đã được tải trên mô hình hay chưa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

09

Phương pháp

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

39 có thể được sử dụng để bao gồm một cách có điều kiện số lượng mối quan hệ trong phản hồi tài nguyên của bạn. Phương pháp này tránh việc bao gồm thuộc tính một cách không cần thiết nếu không có số đếm của các mối quan hệ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

30

Trong ví dụ này, nếu số đếm của mối quan hệ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

38 chưa được tải, khóa

php artisan make:resource User --collection

php artisan make:resource UserCollection

01 sẽ bị xóa khỏi phản hồi của tài nguyên trước khi nó được gửi tới máy khách

Thông tin xoay vòng có điều kiện

Ngoài việc đưa thông tin về mối quan hệ vào phản hồi tài nguyên của bạn một cách có điều kiện, bạn có thể đưa vào một cách có điều kiện dữ liệu từ các bảng trung gian của mối quan hệ nhiều-nhiều bằng cách sử dụng phương pháp

php artisan make:resource User --collection

php artisan make:resource UserCollection

02. Phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

02 chấp nhận tên của bảng tổng hợp làm đối số đầu tiên của nó. Đối số thứ hai phải là một bao đóng trả về giá trị sẽ được trả về nếu thông tin trục có sẵn trên mô hình

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

31

Nếu mối quan hệ của bạn đang sử dụng a , bạn có thể chuyển một phiên bản của mô hình bảng trung gian làm đối số đầu tiên cho phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

02

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

32

Nếu bảng trung gian của bạn đang sử dụng một bộ truy cập không phải là

php artisan make:resource User --collection

php artisan make:resource UserCollection

05, bạn có thể sử dụng phương pháp

php artisan make:resource User --collection

php artisan make:resource UserCollection

06

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

33

Thêm siêu dữ liệu

Một số tiêu chuẩn API JSON yêu cầu bổ sung dữ liệu meta vào các phản hồi về bộ sưu tập tài nguyên và tài nguyên của bạn. Điều này thường bao gồm những thứ như

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

89 đối với tài nguyên hoặc các tài nguyên liên quan hoặc siêu dữ liệu về chính tài nguyên đó. Nếu bạn cần trả về dữ liệu meta bổ sung về một tài nguyên, hãy đưa nó vào phương thức

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

8 của bạn. Ví dụ: bạn có thể bao gồm thông tin

php artisan make:resource User --collection

php artisan make:resource UserCollection

09 khi chuyển đổi một bộ sưu tập tài nguyên

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

34

Khi trả về dữ liệu meta bổ sung từ tài nguyên của bạn, bạn không bao giờ phải lo lắng về việc vô tình ghi đè các khóa

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

89 hoặc

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

88 được Laravel tự động thêm vào khi trả về các phản hồi được phân trang. Bất kỳ

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

89 bổ sung nào bạn xác định sẽ được hợp nhất với các liên kết do trình phân trang cung cấp

Siêu dữ liệu cấp cao nhất

Đôi khi, bạn có thể chỉ muốn bao gồm một số dữ liệu meta nhất định với phản hồi tài nguyên nếu tài nguyên là tài nguyên ngoài cùng được trả về. Thông thường, điều này bao gồm thông tin meta về toàn bộ phản hồi. Để xác định siêu dữ liệu này, hãy thêm phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

13 vào lớp tài nguyên của bạn. Phương thức này sẽ trả về một mảng dữ liệu meta chỉ được đưa vào phản hồi tài nguyên khi tài nguyên là tài nguyên ngoài cùng được chuyển đổi

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

35

Thêm siêu dữ liệu khi xây dựng tài nguyên

Bạn cũng có thể thêm dữ liệu cấp cao nhất khi xây dựng các phiên bản tài nguyên trong tuyến đường hoặc bộ điều khiển của mình. Phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

14, có sẵn trên tất cả các tài nguyên, chấp nhận một mảng dữ liệu sẽ được thêm vào phản hồi của tài nguyên

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

36

Phản hồi tài nguyên

Như bạn đã đọc, tài nguyên có thể được trả về trực tiếp từ các tuyến và bộ điều khiển

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

3

Tuy nhiên, đôi khi bạn có thể cần tùy chỉnh phản hồi HTTP gửi đi trước khi nó được gửi tới máy khách. Có hai cách để thực hiện điều này. Trước tiên, bạn có thể xâu chuỗi phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

15 vào tài nguyên. Phương thức này sẽ trả về một phiên bản

php artisan make:resource User --collection

php artisan make:resource UserCollection

16, cho bạn toàn quyền kiểm soát các tiêu đề của phản hồi

use App\Http\Resources\UserResource;

Route::get['/users', function [] {

return UserResource::collection[User::all[]];

38

Ngoài ra, bạn có thể định nghĩa một phương thức

php artisan make:resource User --collection

php artisan make:resource UserCollection

17 trong chính tài nguyên đó. Phương thức này sẽ được gọi khi tài nguyên được trả về dưới dạng tài nguyên ngoài cùng trong phản hồi

Mục đích của API JSON là gì?

API JSON cho phép bạn tích hợp bất kỳ công cụ bên ngoài nào với Cộng tác viên . Để thực hiện việc này, bạn cần trao đổi dữ liệu giữa ứng dụng và máy chủ Cộng tác viên của mình. Để sử dụng dịch vụ web, bạn cần gửi yêu cầu tới URL điểm cuối của dịch vụ web và nhận phản hồi từ đó.

Việc sử dụng API trong Laravel là gì?

Giới thiệu. Theo mặc định, Laravel cung cấp một giải pháp đơn giản để xác thực API thông qua mã thông báo ngẫu nhiên được chỉ định cho từng người dùng trong ứng dụng của bạn . Trong cấu hình/auth của bạn. php, trình bảo vệ api đã được xác định và sử dụng trình điều khiển mã thông báo.

API REST của Laravel là gì?

Laravel. Ngày 25 tháng 8 năm 2021. API RESTful là giao diện lập trình ứng dụng điều chỉnh các giới hạn của phong cách kỹ thuật REST và xem xét khả năng hợp tác với các dịch vụ web RESTful .

Làm cách nào để sử dụng dữ liệu JSON trong Laravel?

Cài đặt Laravel JSON. Gói thử nghiệm API. nhà soạn nhạc yêu cầu --dev laravel-json-api/testing. .
Tạo tệp máy chủ. nghệ nhân php jsonapi. máy chủ v1. .
jsonapi. php. .
ứng dụng/JsonApi/V1/Máy chủ. .
Tạo mô hình nhiệm vụ, di chuyển và nhà máy. .
Mô hình nhiệm vụ. .
Tạo các lược đồ cho các tác vụ và người dùng. .
Đăng ký các lược đồ trong máy chủ

Chủ Đề