Trả về lỗi xác thực Laravel json

CẬP NHẬT ngày 10 tháng 6 năm 2019. Tôi đã đăng bài viết này trên kênh Slack của LaravelUK và David T đã cho tôi một số phản hồi có giá trị

Bạn có thể buộc Laravel luôn chỉ trả về JSON bằng cách chỉ định tiêu đề Chấp nhận.


Gần đây tôi đã sử dụng thay vì sử dụng xác thực nội tuyến. Tôi thấy việc tách mọi thứ thành các lớp riêng của chúng càng nhiều càng tốt nên tôi rất hài lòng khi điều này được đưa vào khung cốt lõi

Nếu bạn giống tôi và bạn không thể bỏ thói quen viết xác thực nội tuyến thì đừng lo lắng vì Jason McCreary tuyệt vời đã thêm một tính năng tuyệt vời vào Laravel Code Fixer Shift để chuyển đổi xác thực bộ điều khiển nội tuyến thành Yêu cầu biểu mẫu

Khi sử dụng Yêu cầu biểu mẫu với API, bạn sẽ nhận thấy rằng nếu bạn nhấn vào một tuyến API mà quá trình xác thực không thành công, nó sẽ đưa bạn đến chế độ xem 404

Trả về lỗi xác thực Laravel json

Giải pháp của tôi là tạo lớp FormRequest của riêng tôi mà tôi đặt trong không gian tên API gốc namespace App\Http\Requests\Api;

Tệp này chứa văn bản Unicode hai chiều có thể được diễn giải hoặc biên dịch khác với nội dung hiển thị bên dưới. Để xem lại, hãy mở tệp trong trình chỉnh sửa hiển thị các ký tự Unicode bị ẩn. Tìm hiểu thêm về các ký tự Unicode hai chiều

Hiển thị ký tự ẩn

không gian tênỨng dụng\Http** @return mảng*/trừu tượng** @return bool*/trừu tượng** @param \Illuminate\Contracts\Validation\Validator $validator* @return void< . HTTP_UNPROCESSABLE_ENTITY));}}namespace App\Http\Requests\Api;use Illuminate\Http\JsonResponse;use Illuminate\Contracts\Validation\Validator;use Illuminate\Validation\ValidationException;use Illuminate\Http\Exceptions\HttpResponseException;use Illuminate\Foundation\Http\FormRequest as LaravelFormRequest;abstract class FormRequest extends LaravelFormRequest{/*** Get the validation rules that apply to the request.** @return array*/abstract public function rules();/*** Determine if the user is authorized to make this request.** @return bool*/abstract public function authorize();/*** Handle a failed validation attempt.** @param \Illuminate\Contracts\Validation\Validator $validator* @return void** @throws \Illuminate\Validation\ValidationException*/protected function failedValidation(Validator $validator){$errors = (new ValidationException($validator))->errors();throw new HttpResponseException(response()->json(['errors' => $errors], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));}}

xem raw được lưu trữ với ❤ ​​bởi GitHub

Vì vậy, SearchController của bạn sử dụng SearchRequest thay vì Request mặc định vẫn giữ nguyên

Chúng tôi chỉ cập nhật SearchRequest để sử dụng FormRequest tùy chỉnh chứ không phải mặc định và chúng tôi sẽ nhận được phản hồi JSON đẹp mắt khi có lỗi xác thực

Các lớp yêu cầu tài nguyên của chúng tôi cho phép bạn xác thực JSON. Tài liệu API do khách hàng gửi dựa trên các quy tắc xác thực dành riêng cho ứng dụng của bạn. Bạn cũng có thể xác định quy tắc xác thực để xác định xem có thể xóa tài nguyên hay không

Đối với bất kỳ loại tài nguyên nào mà bạn cho phép tạo và/hoặc cập nhật (bao gồm cập nhật các mối quan hệ), bạn sẽ cần tạo một lớp yêu cầu tài nguyên. Để tạo yêu cầu tài nguyên, hãy sử dụng lệnh Artisan jsonapi:request

Điều này sẽ tạo ra lớp yêu cầu sau. ________số 8

TIỀN BOA

Tùy chọn --server không bắt buộc nếu bạn chỉ có một máy chủ

Phương pháp xác thực

Các đối tượng tài nguyên được xác thực bằng cách sử dụng. Nếu bất kỳ trường nào không tuân theo các quy tắc xác thực, phản hồi namespace App\Http\Requests\Api;0 sẽ được gửi. Thông báo lỗi của trình xác thực sẽ được chuyển thành JSON. Lỗi API, với thông báo lỗi quy tắc trong thành viên namespace App\Http\Requests\Api;1 của đối tượng lỗi. Mỗi lỗi cũng sẽ có một bộ con trỏ nguồn JSON xác định vị trí trong nội dung yêu cầu của lỗi xác thực

TIỀN BOA

Tại sao các quy tắc xác thực không được xác định trên các trường lược đồ, như tài nguyên Nova?

Đây là một câu hỏi hay. Mặc dù lúc đầu, các trường lược đồ của chúng tôi triển khai các quy tắc xác thực kiểu Nova (mở cửa sổ mới) có vẻ là một ý tưởng hay, nhưng chúng tôi không tin rằng đây là cách phù hợp để xác thực JSON. Trong khi Nova đang buộc xác thực của nó vào các trường nhập HTML, thì JSON của bạn. Các đối tượng tài nguyên API có thể chứa các cấu trúc phức tạp, chẳng hạn như mảng và các đối tượng JSON lồng nhau

Điều này làm cho việc đính kèm các quy tắc xác thực vào các trường cụ thể trở nên phức tạp hơn nhiều, do đó, chúng tôi đã chọn cách xác định quy tắc đơn giản bằng cách sử dụng phương pháp tiếp cận

Dữ liệu xác thực

Tạo tài nguyên

Trình xác thực được cung cấp cùng với trình xác thực do khách hàng gửi. Nói chung đây là namespace App\Http\Requests\Api;2, namespace App\Http\Requests\Api;3, namespace App\Http\Requests\Api;4 và namespace App\Http\Requests\Api;5 của tài nguyên. Để viết quy tắc xác thực dễ dàng hơn, chúng tôi đặt giá trị của các trường mối quan hệ thành thành viên namespace App\Http\Requests\Api;6 của mối quan hệ

Điều này được minh họa tốt nhất với một ví dụ. Đưa ra yêu cầu này

Trình xác thực của bạn sẽ được cung cấp mảng dữ liệu sau

Cập nhật tài nguyên

Khi cập nhật tài nguyên, JSON. đặc tả API nói

Nếu một yêu cầu không bao gồm tất cả các thuộc tính cho một tài nguyên, thì máy chủ PHẢI diễn giải các thuộc tính bị thiếu như thể chúng được bao gồm trong các giá trị hiện tại của chúng. Máy chủ KHÔNG ĐƯỢC diễn giải các thuộc tính bị thiếu dưới dạng giá trị null

Điều tương tự cũng áp dụng cho các mối quan hệ

Vì Laravel cung cấp các quy tắc xác thực cho phép bạn so sánh các giá trị đang được xác thực (e. g. một ngày phải là App\JsonApi\V1\Posts\PostRequest0 một giá trị khác), chúng tôi lấy các giá trị trường hiện có của tài nguyên của bạn và hợp nhất các giá trị do khách hàng cung cấp ở trên cùng

Ví dụ: trong yêu cầu App\JsonApi\V1\Posts\PostRequest1 sau đây, khách hàng chưa cung cấp giá trị cho các trường App\JsonApi\V1\Posts\PostRequest2, App\JsonApi\V1\Posts\PostRequest3 và App\JsonApi\V1\Posts\PostRequest4

Để tuân thủ JSON. Đặc tả API, chúng tôi phải giả định rằng các trường bị thiếu là các giá trị hiện tại được lưu trữ trên tài nguyên. Do đó, chúng tôi lấy các giá trị tài nguyên hiện tại và sau đó hợp nhất các giá trị máy khách ở trên cùng. Trong ví dụ trên, điều này có nghĩa là trình xác thực nhận dữ liệu sau

Khi tính giá trị hiện tại ta chỉ lấy giá trị của quan hệ App\JsonApi\V1\Posts\PostRequest5 và App\JsonApi\V1\Posts\PostRequest6. Điều này là do chúng ta sẽ cực kỳ kém hiệu quả khi đọc giá trị của mọi mối quan hệ. Ví dụ: tài nguyên App\JsonApi\V1\Posts\PostRequest7 của chúng tôi có thể có hàng trăm App\JsonApi\V1\Posts\PostRequest8, không cần thiết để xác thực

Nếu bạn cần các giá trị của một mối quan hệ không được bao gồm theo mặc định, hãy sử dụng phương pháp App\JsonApi\V1\Posts\PostRequest9 trên trường trong lược đồ của bạn. Ví dụ: nếu chúng tôi muốn sử dụng giá trị hiện tại của --server0

Nếu bạn muốn loại trừ mối quan hệ App\JsonApi\V1\Posts\PostRequest5 hoặc App\JsonApi\V1\Posts\PostRequest6 mà chúng tôi tự động đưa vào, hãy sử dụng phương pháp --server3 trên trường trong lược đồ của bạn. Ví dụ: nếu chúng tôi muốn loại trừ mối quan hệ App\JsonApi\V1\Posts\PostRequest4

Tùy chỉnh các giá trị hiện có

Nếu bạn muốn điều chỉnh bất kỳ giá trị hiện tại nào trước khi hợp nhất các giá trị do máy khách cung cấp, hãy triển khai phương thức --server5 trên lớp yêu cầu của bạn. Phương thức này nhận model và JSON. Biểu diễn tài nguyên API làm đối số của nó

Bạn phải trả về mảng mà bạn muốn trình xác thực sử dụng. Nếu bạn trả về --server6, thì trình xác thực sẽ cho rằng bạn không sửa đổi tài nguyên và sẽ sử dụng tài nguyên đó như hiện tại

Sửa đổi mối quan hệ

JSON. Đặc tả API cung cấp các điểm cuối mối quan hệ để sửa đổi mối quan hệ tài nguyên. Các mối quan hệ với một và nhiều có thể được thay thế bằng yêu cầu App\JsonApi\V1\Posts\PostRequest1. Đối với mối quan hệ nhiều người, tài nguyên có thể được đính kèm thông qua yêu cầu --server8 hoặc tách ra bằng yêu cầu --server9

Đưa ra yêu cầu này

Trình xác thực của bạn sẽ được cung cấp mảng dữ liệu sau

TIỀN BOA

Trong trường hợp này, chúng tôi lọc các quy tắc tài nguyên được trả về từ phương thức namespace App\Http\Requests\Api;00 của bạn để chỉ bao gồm các quy tắc có khóa bắt đầu bằng --server0

Quy tắc xác thực

Xác định quy tắc tài nguyên

Để xác thực dữ liệu này, bạn xác định các quy tắc xác thực trong phương thức namespace App\Http\Requests\Api;00 của lớp yêu cầu tài nguyên của bạn. Chúng tôi sử dụng dữ liệu đã được xác thực để điền vào các mô hình, vì vậy bạn phải xác thực mọi thuộc tính và mối quan hệ mà bạn muốn điền vào mô hình của mình

Ví dụ: quy tắc namespace App\Http\Requests\Api;03 của chúng tôi có thể trông như thế này

TIỀN BOA

Bạn có thể nhập gợi ý bất kỳ phụ thuộc nào bạn cần trong chữ ký của phương thức quy tắc. Chúng sẽ tự động được giải quyết thông qua Laravel service container

Quy tắc quan hệ

Trong ví dụ trên, bạn sẽ nhận thấy rằng quy tắc namespace App\Http\Requests\Api;04 không được sử dụng để xác thực cho các mối quan hệ App\JsonApi\V1\Posts\PostRequest4 hoặc --server0. Điều này là do gói tuân thủ JSON. Thông số API và xác thực tất cả các mã định danh tài nguyên trong các mối quan hệ để kiểm tra xem chúng có tồn tại không. Nếu không tồn tại, yêu cầu sẽ bị từ chối khi tài liệu có JSON. đặc tả API

Thay vào đó, đối với các mối quan hệ, tất cả những gì chúng ta cần làm là cung cấp các quy tắc namespace App\Http\Requests\Api;07 và namespace App\Http\Requests\Api;08. Chúng sử dụng lược đồ cho loại tài nguyên yêu cầu để đảm bảo rằng các mối quan hệ chứa đúng loại tài nguyên

Hãy nhớ rằng bạn phải xác thực mọi mối quan hệ mà bạn muốn điền vào mô hình của mình

ID do khách hàng tạo

Ví dụ: nếu tài nguyên của bạn chấp nhận, bạn phải thêm các quy tắc xác thực cho trường namespace App\Http\Requests\Api;3

Quy tắc ID ứng dụng khách đảm bảo rằng ID được cung cấp khớp với bộ trong giản đồ của bạn. Do đó, không cần sử dụng quy tắc xác thực namespace App\Http\Requests\Api;10 của Laravel

Nếu bạn luôn mong đợi một khách hàng cung cấp một namespace App\Http\Requests\Api;3, hãy sử dụng quy tắc namespace App\Http\Requests\Api;12 của Laravel như trong ví dụ trên. Nếu máy chủ của bạn xử lý ứng dụng khách không cung cấp ID (ví dụ: nếu bạn tự động tạo UUID ngẫu nhiên nếu ID không được cung cấp), thì hãy sử dụng quy tắc namespace App\Http\Requests\Api;13 thay vì namespace App\Http\Requests\Api;12

TIỀN BOA

Như trong ví dụ, không cần sử dụng quy tắc namespace App\Http\Requests\Api;04 để kiểm tra xem ID do khách hàng tạo đã tồn tại chưa. Điều này là do JSON. Đặc tả API xác định rằng các máy chủ sẽ gửi phản hồi namespace App\Http\Requests\Api;16 khi tạo tài nguyên có ID do khách hàng tạo đã tồn tại. Do đó, chúng tôi từ chối kịch bản này khi kiểm tra xem liệu

Truy cập mô hình

Nếu bạn cần truy cập mô hình khi xác định các quy tắc xác thực của mình, hãy sử dụng phương pháp namespace App\Http\Requests\Api;17. Vì các quy tắc của bạn được sử dụng cho cả yêu cầu tạo và cập nhật, phương thức này sẽ trả về --server6 cho yêu cầu tạo và mô hình cho yêu cầu cập nhật

Ví dụ

Truy cập dữ liệu xác thực

Nếu bạn cần truy cập dữ liệu xác thực trong phương thức namespace App\Http\Requests\Api;00 của mình, hãy gọi phương thức namespace App\Http\Requests\Api;20

Thêm Sau Móc

Nếu bạn muốn thêm hook "after" vào yêu cầu biểu mẫu, bạn có thể sử dụng phương thức namespace App\Http\Requests\Api;21. Phương thức này nhận được trình xác thực được xây dựng đầy đủ, cho phép bạn gọi bất kỳ phương thức nào của nó trước khi các quy tắc xác thực thực sự được đánh giá

CẢNH BÁO

Khi thêm các hook sau, bạn sẽ cần sử dụng yêu cầu để xác định loại yêu cầu đó là gì. Ví dụ trên kiểm tra xem yêu cầu đang tạo hay cập nhật tài nguyên

Bạn cần làm điều này vì phương thức namespace App\Http\Requests\Api;21 sẽ được gọi cho tất cả các loại yêu cầu khác nhau được mô tả trong chương này, tôi. e. tạo/cập nhật tài nguyên, sửa đổi mối quan hệ và xóa tài nguyên

Xác thực có điều kiện phức tạp

Phương thức namespace App\Http\Requests\Api;21 cũng có thể được sử dụng để thêm , sử dụng phương thức namespace App\Http\Requests\Api;24 trên trình xác thực. Ví dụ

CẢNH BÁO

Khi thêm xác thực có điều kiện, bạn sẽ cần sử dụng yêu cầu để xác định loại yêu cầu đó là gì. Ví dụ trên kiểm tra xem yêu cầu có đang tạo hoặc cập nhật tài nguyên hay không trước khi áp dụng các quy tắc xác thực có điều kiện

Bạn cần làm điều này vì phương thức namespace App\Http\Requests\Api;21 sẽ được gọi cho tất cả các loại yêu cầu khác nhau được mô tả trong chương này, tôi. e. tạo/cập nhật tài nguyên, sửa đổi mối quan hệ và xóa tài nguyên

Xác thực Booleans

Trong JSON, một boolean luôn là namespace App\Http\Requests\Api;26 hoặc namespace App\Http\Requests\Api;27. Tuy nhiên, quy tắc xác thực namespace App\Http\Requests\Api;28 của Laravel được gõ lỏng lẻo - tôi. e. nó sẽ chấp nhận namespace App\Http\Requests\Api;26, namespace App\Http\Requests\Api;27, namespace App\Http\Requests\Api;31, namespace App\Http\Requests\Api;32, namespace App\Http\Requests\Api;33 và namespace App\Http\Requests\Api;34 là các giá trị hợp lệ

Đối với JSON, tốt hơn là nhập đúng các giá trị boolean. Sử dụng quy tắc namespace App\Http\Requests\Api;28 của chúng tôi để thực thi chỉ chấp nhận namespace App\Http\Requests\Api;26 và namespace App\Http\Requests\Api;27 làm giá trị hợp lệ

JSON. API. Điều này không thể xác thực bằng cách sử dụng quy tắc xác thực namespace App\Http\Requests\Api;38 của Laravel, bởi vì W3C tuyên bố rằng một số định dạng ngày và giờ là hợp lệ. Ví dụ: tất cả những điều sau đây đều hợp lệ

  • namespace App\Http\Requests\Api;39
  • namespace App\Http\Requests\Api;40
  • namespace App\Http\Requests\Api;41
  • namespace App\Http\Requests\Api;42
  • namespace App\Http\Requests\Api;43
  • namespace App\Http\Requests\Api;44
  • namespace App\Http\Requests\Api;45
  • namespace App\Http\Requests\Api;46

Để chấp nhận bất kỳ định dạng hợp lệ nào cho trường ngày tháng, gói này cung cấp một đối tượng quy tắc. Điều này có thể được sử dụng như sau

Xác thực số

Các quy tắc namespace App\Http\Requests\Api;47 và namespace App\Http\Requests\Api;48 của Laravel được gõ lỏng lẻo - nghĩa là chúng sẽ chấp nhận các số nguyên, số float và chuỗi biểu diễn của các số. Tuy nhiên, JSON có thể được gõ đúng - tôi. e. khi giải mã JSON, chúng ta có thể mong đợi một giá trị là số nguyên PHP hoặc số float

Nếu bạn có một trường có thể chấp nhận số nguyên hoặc số float, hãy sử dụng quy tắc xác thực namespace App\Http\Requests\Api;49 của chúng tôi để đảm bảo rằng nó được nhập đúng cách

Để chỉ chấp nhận số nguyên, hãy sử dụng quy tắc namespace App\Http\Requests\Api;47

Quy tắc bắt buộc

Sử dụng quy tắc namespace App\Http\Requests\Api;12 có thể dẫn đến JSON. Đối tượng lỗi API có con trỏ JSON tới namespace App\Http\Requests\Api;52 hoặc trường thực tế được yêu cầu, e. g. namespace App\Http\Requests\Api;53. Điều này sẽ thay đổi tùy theo việc khách hàng bỏ qua trường hay gửi một giá trị trống cho trường

Nếu bạn luôn muốn con trỏ liên quan đến trường thực, e. g. namespace App\Http\Requests\Api;53, đảm bảo khách hàng của bạn luôn gửi giá trị cho trường, ngay cả khi giá trị đó trống (e. g. --server6)

Để minh họa điều này, đây là hai yêu cầu không tuân theo quy tắc namespace App\Http\Requests\Api;12 và kết quả là phản hồi lỗi

Trường bị bỏ qua

Trong trường hợp này, không thể sử dụng một con trỏ JSON của namespace App\Http\Requests\Api;53 vì nó sẽ trỏ đến một trường không tồn tại trong JSON yêu cầu. Thay vào đó, con trỏ namespace App\Http\Requests\Api;52 cho biết lỗi là do đối tượng tài nguyên được giữ trong thành viên namespace App\Http\Requests\Api;6 cấp cao nhất

Trường trống

Trong trường hợp này, con trỏ có thể là namespace App\Http\Requests\Api;53 vì trường thực sự tồn tại trong JSON yêu cầu

Quy tắc đã xác nhận

Quy tắc namespace App\Http\Requests\Api;61 của Laravel hy vọng sẽ có một trường có cùng tên và namespace App\Http\Requests\Api;62 ở cuối. Ví dụ: nếu sử dụng quy tắc namespace App\Http\Requests\Api;61 trên trường namespace App\Http\Requests\Api;64, quy tắc đó dự kiến ​​sẽ có trường namespace App\Http\Requests\Api;65

Nếu bạn không sử dụng dấu gạch dưới trong tên trường của mình, điều này có nghĩa là quy tắc namespace App\Http\Requests\Api;61 sẽ không hoạt động. Ví dụ: nếu sử dụng trường hợp lạc đà, trường bổ sung của bạn sẽ được gọi là namespace App\Http\Requests\Api;67. Thật không may, Laravel không cung cấp cách tùy chỉnh tên trường xác nhận dự kiến

Trong trường hợp này, bạn sẽ cần sử dụng các quy tắc sau để namespace App\Http\Requests\Api;67 hoạt động

Hãy nhớ lưu ý, nơi máy chủ phải giả định rằng các giá trị bị thiếu có giá trị hiện tại. Đối với các trường hợp mật khẩu, trình xác thực của bạn sẽ không có quyền truy cập vào giá trị hiện tại

Do đó, bạn sẽ cần điều chỉnh việc sử dụng quy tắc namespace App\Http\Requests\Api;12 và App\JsonApi\V1\Posts\PostRequest00 để chỉ thêm chúng nếu khách hàng đã gửi mật khẩu. Ví dụ

Tùy chỉnh thông báo lỗi

Bạn có thể tùy chỉnh các thông báo lỗi được sử dụng bởi yêu cầu biểu mẫu bằng cách ghi đè phương thức App\JsonApi\V1\Posts\PostRequest01. Phương thức này sẽ trả về một mảng các cặp thuộc tính/quy tắc và các thông báo lỗi tương ứng của chúng

Tùy chỉnh các thuộc tính xác thực

Nếu bạn muốn thay thế phần App\JsonApi\V1\Posts\PostRequest02 của thông báo xác thực bằng tên thuộc tính tùy chỉnh, bạn có thể chỉ định tên tùy chỉnh bằng cách ghi đè phương thức namespace App\Http\Requests\Api;4. Phương thức này sẽ trả về một mảng các cặp thuộc tính/tên

Các yêu cầu biểu mẫu của Laravel cho phép bạn truy xuất dữ liệu đã được xác thực bằng phương thức App\JsonApi\V1\Posts\PostRequest04. Trên lớp yêu cầu của chúng tôi, điều này trả về dữ liệu đã được xác thực cho yêu cầu tạo hoặc cập nhật tài nguyên

Đối với các yêu cầu về mối quan hệ, bạn nên sử dụng phương thức App\JsonApi\V1\Posts\PostRequest05 để truy xuất giá trị đã được xác thực

Xóa tài nguyên

Có thể thêm quy tắc xác thực để xóa tài nguyên. Điều này hữu ích nếu bạn muốn ngăn việc xóa tài nguyên trong một số trường hợp nhất định. Xác nhận này là tùy chọn. Nếu lớp trình xác thực của bạn không xác định bất kỳ quy tắc xóa nào, yêu cầu xóa sẽ được cho phép

Ví dụ: nếu bạn không muốn cho phép ứng dụng khách API xóa App\JsonApi\V1\Posts\PostRequest7 có App\JsonApi\V1\Posts\PostRequest8

Xóa dữ liệu xác thực

Theo mặc định, chúng tôi chuyển các giá trị trường hiện tại của tài nguyên tới trình xác thực xóa. Đây là quy trình tương tự như , mặc dù chúng tôi cho phép bạn thêm dữ liệu cụ thể cho yêu cầu xóa

Để thêm dữ liệu cho xác thực xóa, hãy sử dụng phương thức App\JsonApi\V1\Posts\PostRequest08 để trả về một mảng giá trị. Điều này sau đó có sẵn để xác thực bằng cách sử dụng các quy tắc cho giá trị App\JsonApi\V1\Posts\PostRequest09

Trong ví dụ trên, phương thức App\JsonApi\V1\Posts\PostRequest08 được sử dụng để thêm một giá trị boolean để chỉ ra rằng tài nguyên App\JsonApi\V1\Posts\PostRequest7 không có nhận xét nào. Điều này sau đó được xác thực bằng đường dẫn App\JsonApi\V1\Posts\PostRequest12

Quy tắc xác thực xóa

Xác định quy tắc xác thực xóa trong phương thức App\JsonApi\V1\Posts\PostRequest13 của trình xác thực của bạn, như trong ví dụ trên

Như với phương thức namespace App\Http\Requests\Api;00, bạn có thể nhập gợi ý bất kỳ phụ thuộc nào bạn cần trong chữ ký của phương thức quy tắc. Chúng sẽ tự động được giải quyết thông qua Laravel service container

Bạn cũng có thể truy cập mô hình đang bị xóa thông qua phương pháp namespace App\Http\Requests\Api;17

Xóa thông báo lỗi

Để thêm bất kỳ thông báo lỗi tùy chỉnh nào cho các quy tắc tài nguyên xóa của bạn, hãy triển khai phương thức App\JsonApi\V1\Posts\PostRequest16. Điều này sẽ trả về một mảng thông báo tùy chỉnh, sẽ được hợp nhất với thông báo lỗi tùy chỉnh tài nguyên của bạn

Xóa tên thuộc tính

Để thêm bất kỳ tên thuộc tính tùy chỉnh nào cho quy tắc tài nguyên xóa của bạn, hãy triển khai phương thức App\JsonApi\V1\Posts\PostRequest17. Điều này sẽ trả về một mảng các thuộc tính tùy chỉnh, sẽ được hợp nhất với các thuộc tính tùy chỉnh của tài nguyên của bạn

Phương pháp trợ giúp

Lớp yêu cầu tài nguyên của chúng tôi có một số phương thức trợ giúp, để cho phép bạn xác định loại yêu cầu mà lớp đang xử lý. Các phương pháp có sẵn là

TIỀN BOA

Chúng tôi khuyên bạn nên sử dụng các phương pháp này thay vì sử dụng phương pháp App\JsonApi\V1\Posts\PostRequest18, vì động từ HTTP có thể được sử dụng cho cả yêu cầu tài nguyên và mối quan hệ. e. g. --server8 được sử dụng cho cả việc tạo tài nguyên và thay thế nội dung của một mối quan hệ

đang tạo

Trả về namespace App\Http\Requests\Api;26 nếu yêu cầu sẽ thay thế nội dung của mối quan hệ trên một tài nguyên hiện có. Ví dụ