Laravel cung cấp một API tối thiểu, biểu cảm xung quanh ứng dụng khách Guzzle HTTP, cho phép bạn nhanh chóng thực hiện các yêu cầu HTTP gửi đi để giao tiếp với các ứng dụng web khác. Trình bao bọc của Laravel xung quanh Guzzle tập trung vào các trường hợp sử dụng phổ biến nhất và trải nghiệm nhà phát triển tuyệt vời Show
Trước khi bắt đầu, bạn nên đảm bảo rằng bạn đã cài đặt gói Guzzle làm phụ thuộc cho ứng dụng của mình. Theo mặc định, Laravel tự động bao gồm phần phụ thuộc này. Tuy nhiên, nếu bạn đã gỡ bỏ gói trước đó, bạn có thể cài đặt lại gói đó qua Composer
Yêu cầuĐể đưa ra yêu cầu, bạn có thể sử dụng các phương pháp 8, 9, 0, 1, 2 và 3 do mặt tiền 4 cung cấp. Trước tiên, hãy kiểm tra cách thực hiện một yêu cầu 5 cơ bản tới một URL khác
Phương thức 9 trả về một phiên bản của 7, cung cấp nhiều phương thức khác nhau có thể được sử dụng để kiểm tra phản hồi 2Đối tượng 7 cũng triển khai giao diện PHP 9, cho phép bạn truy cập dữ liệu phản hồi JSON trực tiếp trên phản hồi 5Yêu cầu bán phá giáNếu bạn muốn kết xuất phiên bản yêu cầu gửi đi trước khi nó được gửi và chấm dứt quá trình thực thi tập lệnh, bạn có thể thêm phương thức 60 vào đầu định nghĩa yêu cầu của mình
Yêu cầu dữ liệuTất nhiên, thông thường khi thực hiện các yêu cầu 61, 62 và 63 để gửi dữ liệu bổ sung cùng với yêu cầu của bạn, vì vậy các phương thức này chấp nhận một mảng dữ liệu làm đối số thứ hai của chúng. Theo mặc định, dữ liệu sẽ được gửi bằng loại nội dung 64
NHẬN Tham số truy vấn yêu cầuKhi thực hiện yêu cầu 5, bạn có thể trực tiếp thêm chuỗi truy vấn vào URL hoặc chuyển một mảng các cặp khóa/giá trị làm đối số thứ hai cho phương thức 9 6Gửi yêu cầu được mã hóa URL biểu mẫuNếu bạn muốn gửi dữ liệu bằng loại nội dung 67, bạn nên gọi phương thức 68 trước khi thực hiện yêu cầu của mình 8Gửi một nội dung yêu cầu thôBạn có thể sử dụng phương pháp 69 nếu bạn muốn cung cấp nội dung yêu cầu thô khi thực hiện yêu cầu. Loại nội dung có thể được cung cấp thông qua đối số thứ hai của phương thức 0Yêu cầu nhiều phầnNếu bạn muốn gửi tệp dưới dạng yêu cầu nhiều phần, bạn nên gọi phương thức 80 trước khi thực hiện yêu cầu của mình. Phương pháp này chấp nhận tên của tập tin và nội dung của nó. Nếu cần, bạn có thể cung cấp đối số thứ ba sẽ được coi là tên tệp của tệp 2Thay vì chuyển nội dung thô của tệp, bạn có thể chuyển tài nguyên luồng 0tiêu đềTiêu đề có thể được thêm vào các yêu cầu bằng phương pháp 81. Phương thức 81 này chấp nhận một mảng các cặp khóa/giá trị 1Bạn có thể sử dụng phương pháp 83 để chỉ định loại nội dung mà ứng dụng của bạn đang mong đợi để đáp ứng yêu cầu của bạn 2Để thuận tiện, bạn có thể sử dụng phương pháp 84 để nhanh chóng xác định rằng ứng dụng của bạn mong muốn loại nội dung 64 đáp ứng yêu cầu của bạn 3xác thựcBạn có thể chỉ định thông tin đăng nhập xác thực cơ bản và thông báo bằng cách sử dụng các phương pháp 86 và 87 tương ứng 4Mã thông báo mangNếu bạn muốn nhanh chóng thêm mã thông báo mang vào tiêu đề 88 của yêu cầu, bạn có thể sử dụng phương thức 89 5Hết giờPhương pháp 00 có thể được sử dụng để chỉ định số giây tối đa để chờ phản hồi 6Nếu vượt quá thời gian chờ nhất định, một phiên bản của 01 sẽ bị némBạn có thể chỉ định số giây tối đa để chờ trong khi cố gắng kết nối với máy chủ bằng phương pháp 02 7thử lạiNếu bạn muốn máy khách HTTP tự động thử lại yêu cầu nếu xảy ra lỗi máy khách hoặc máy chủ, bạn có thể sử dụng phương thức 03. Phương thức 03 chấp nhận số lần yêu cầu tối đa được thử và số mili giây mà Laravel sẽ đợi giữa các lần thử 8Nếu cần, bạn có thể chuyển đối số thứ ba cho phương thức 03. Đối số thứ ba phải là một đối số có thể gọi được để xác định xem có thực sự thử lại hay không. Ví dụ: bạn có thể chỉ muốn thử lại yêu cầu nếu yêu cầu ban đầu gặp lỗi 06 9Nếu một lần thử yêu cầu không thành công, bạn có thể muốn thay đổi yêu cầu trước khi thực hiện một lần thử mới. Bạn có thể đạt được điều này bằng cách sửa đổi đối số yêu cầu được cung cấp thành khả năng gọi được mà bạn đã cung cấp cho phương thức 03. Ví dụ: bạn có thể muốn thử lại yêu cầu bằng mã thông báo ủy quyền mới nếu lần thử đầu tiên trả về lỗi xác thực 20Nếu tất cả các yêu cầu không thành công, một phiên bản của 08 sẽ bị ném. Nếu bạn muốn tắt hành vi này, bạn có thể cung cấp đối số 09 với giá trị là 20. Khi bị tắt, phản hồi cuối cùng mà khách hàng nhận được sẽ được trả về sau khi tất cả các lần thử lại đã được thực hiện 21
Xử lý lỗiKhông giống như hành vi mặc định của Guzzle, trình bao bọc ứng dụng khách HTTP của Laravel không đưa ra ngoại lệ đối với lỗi máy khách hoặc máy chủ (phản hồi cấp độ ____324 và 25 từ máy chủ). Bạn có thể xác định xem một trong những lỗi này có được trả về hay không bằng cách sử dụng các phương pháp 26, 27 hoặc 28 22Ném ngoại lệNếu bạn có một phiên bản phản hồi và muốn đưa ra một phiên bản 08 nếu mã trạng thái phản hồi chỉ ra lỗi máy khách hoặc máy chủ, bạn có thể sử dụng các phương thức 09 hoặc 01 23Phiên bản 08 có thuộc tính công khai 03 sẽ cho phép bạn kiểm tra phản hồi được trả vềPhương thức 09 trả về thể hiện phản hồi nếu không xảy ra lỗi, cho phép bạn xâu chuỗi các hoạt động khác vào phương thức 09 24Nếu bạn muốn thực hiện một số logic bổ sung trước khi ném ngoại lệ, bạn có thể chuyển một bao đóng cho phương thức 09. Ngoại lệ sẽ được ném tự động sau khi lệnh đóng được gọi, vì vậy bạn không cần phải ném lại ngoại lệ từ bên trong lệnh đóng 25Phần mềm trung gian đánh lừaVì ứng dụng khách HTTP của Laravel được cung cấp bởi Guzzle, bạn có thể tận dụng Phần mềm trung gian của Guzzle để điều khiển yêu cầu gửi đi hoặc kiểm tra phản hồi gửi đến. Để xử lý yêu cầu gửi đi, hãy đăng ký phần mềm trung gian Guzzle thông qua phương pháp 07 kết hợp với nhà máy phần mềm trung gian 08 của Guzzle 26Tương tự như vậy, bạn có thể kiểm tra phản hồi HTTP đến bằng cách đăng ký một phần mềm trung gian thông qua phương pháp 07 kết hợp với nhà máy phần mềm trung gian 10 của Guzzle 27Tùy chọn đánh lừaBạn có thể chỉ định các tùy chọn yêu cầu Guzzle bổ sung bằng cách sử dụng phương pháp 11. Phương thức 11 chấp nhận một mảng các cặp khóa/giá trị 28Yêu cầu đồng thờiĐôi khi, bạn có thể muốn thực hiện đồng thời nhiều yêu cầu HTTP. Nói cách khác, bạn muốn một số yêu cầu được gửi đi cùng một lúc thay vì đưa ra các yêu cầu tuần tự. Điều này có thể giúp cải thiện hiệu suất đáng kể khi tương tác với API HTTP chậm Rất may, bạn có thể thực hiện việc này bằng phương pháp 13. Phương thức 13 chấp nhận một bao đóng nhận một phiên bản 15, cho phép bạn dễ dàng thêm các yêu cầu vào nhóm yêu cầu để gửi đi 29Như bạn có thể thấy, mỗi phiên bản phản hồi có thể được truy cập dựa trên thứ tự nó được thêm vào nhóm. Nếu muốn, bạn có thể đặt tên cho các yêu cầu bằng phương pháp 16, cho phép bạn truy cập các phản hồi tương ứng theo tên 50macroỨng dụng khách HTTP của Laravel cho phép bạn xác định "macro", có thể phục vụ như một cơ chế linh hoạt, rõ ràng để định cấu hình các đường dẫn và tiêu đề yêu cầu phổ biến khi tương tác với các dịch vụ trong ứng dụng của bạn. Để bắt đầu, bạn có thể định nghĩa macro trong phương thức 17 của lớp 18 trong ứng dụng của bạn 51Khi macro của bạn đã được định cấu hình, bạn có thể gọi nó từ bất kỳ đâu trong ứng dụng của mình để tạo yêu cầu đang chờ xử lý với cấu hình đã chỉ định 52thử nghiệmNhiều dịch vụ của Laravel cung cấp chức năng giúp bạn viết bài kiểm tra một cách dễ dàng và rõ ràng, và ứng dụng khách HTTP của Laravel cũng không ngoại lệ. Phương thức 20 của mặt tiền 4 cho phép bạn hướng dẫn máy khách HTTP trả về các phản hồi gốc/giả khi yêu cầu được thực hiệnPhản hồi giả mạoVí dụ: để hướng dẫn máy khách HTTP trả về các phản hồi mã trạng thái 21 trống cho mọi yêu cầu, bạn có thể gọi phương thức 20 không có đối số 53Giả mạo các URL cụ thểNgoài ra, bạn có thể truyền một mảng vào phương thức 20. Các khóa của mảng phải đại diện cho các mẫu URL mà bạn muốn giả mạo và các phản hồi liên quan của chúng. Ký tự 24 có thể được sử dụng làm ký tự đại diện. Mọi yêu cầu được thực hiện đối với các URL chưa bị giả mạo sẽ thực sự được thực thi. Bạn có thể sử dụng phương pháp 26 của mặt tiền 4 để xây dựng phản hồi sơ khai/giả mạo cho các điểm cuối này 54Nếu bạn muốn chỉ định một mẫu URL dự phòng sẽ bỏ tất cả các URL chưa khớp, bạn có thể sử dụng một ký tự 24 55Trình tự phản hồi giả mạoĐôi khi, bạn có thể cần chỉ định rằng một URL sẽ trả về một loạt phản hồi giả mạo theo một thứ tự cụ thể. Bạn có thể thực hiện việc này bằng cách sử dụng phương pháp 28 để tạo câu trả lời 56Khi tất cả các phản hồi trong chuỗi phản hồi đã được sử dụng, bất kỳ yêu cầu nào khác sẽ khiến chuỗi phản hồi đưa ra một ngoại lệ. Nếu bạn muốn chỉ định một phản hồi mặc định sẽ được trả về khi một chuỗi trống, bạn có thể sử dụng phương thức 29 57Nếu bạn muốn giả mạo một chuỗi phản hồi nhưng không cần chỉ định một mẫu URL cụ thể sẽ được giả mạo, bạn có thể sử dụng phương pháp 30 58Gọi lại giảNếu bạn yêu cầu logic phức tạp hơn để xác định phản hồi nào sẽ trả về cho một số điểm cuối nhất định, bạn có thể chuyển một bao đóng cho phương thức 20. Việc đóng này sẽ nhận một thể hiện của 32 và sẽ trả về một thể hiện phản hồi. Trong thời gian đóng của bạn, bạn có thể thực hiện bất kỳ logic nào cần thiết để xác định loại phản hồi nào sẽ trả về 59Ngăn chặn yêu cầu đi lạcNếu bạn muốn đảm bảo rằng tất cả các yêu cầu được gửi qua ứng dụng khách HTTP đã bị giả mạo trong suốt thử nghiệm cá nhân hoặc bộ thử nghiệm hoàn chỉnh của bạn, bạn có thể gọi phương thức 33. Sau khi gọi phương thức này, bất kỳ yêu cầu nào không có phản hồi giả mạo tương ứng sẽ đưa ra một ngoại lệ thay vì thực hiện yêu cầu HTTP thực tế 0Kiểm tra yêu cầuKhi giả mạo phản hồi, đôi khi bạn có thể muốn kiểm tra các yêu cầu mà máy khách nhận được để đảm bảo ứng dụng của bạn đang gửi đúng dữ liệu hoặc tiêu đề. Bạn có thể thực hiện điều này bằng cách gọi phương thức 34 sau khi gọi 35Phương thức 36 chấp nhận một bao đóng sẽ nhận một phiên bản 32 và sẽ trả về một giá trị boolean cho biết liệu yêu cầu có phù hợp với mong đợi của bạn hay không. Để bài kiểm tra vượt qua, ít nhất một yêu cầu phải được đưa ra phù hợp với các kỳ vọng đã cho 1Nếu cần, bạn có thể khẳng định rằng một yêu cầu cụ thể đã không được gửi bằng phương pháp 38 2Bạn có thể sử dụng phương pháp 39 để xác nhận có bao nhiêu yêu cầu đã được "gửi" trong quá trình kiểm tra 3Hoặc, bạn có thể sử dụng phương pháp 40 để khẳng định rằng không có yêu cầu nào được gửi trong quá trình kiểm tra 4Ghi lại yêu cầu / phản hồiBạn có thể sử dụng phương pháp 41 để thu thập tất cả các yêu cầu và phản hồi tương ứng của chúng. Phương thức 41 trả về một tập hợp các mảng chứa các thể hiện của 32 và 7 5Ngoài ra, phương thức 41 chấp nhận một bao đóng sẽ nhận một thể hiện của 32 và 7 và có thể được sử dụng để lọc các cặp yêu cầu/phản hồi dựa trên mong đợi của bạn 6Sự kiệnLaravel kích hoạt ba sự kiện trong quá trình gửi yêu cầu HTTP. Sự kiện 48 được kích hoạt trước khi gửi yêu cầu, trong khi sự kiện 49 được kích hoạt sau khi nhận được phản hồi cho một yêu cầu nhất định. Sự kiện 50 được kích hoạt nếu không nhận được phản hồi cho một yêu cầu nhất địnhCả hai sự kiện 48 và 50 đều chứa một thuộc tính 53 công khai mà bạn có thể sử dụng để kiểm tra đối tượng 32. Tương tự như vậy, sự kiện 49 chứa thuộc tính 53 cũng như thuộc tính 03 có thể được sử dụng để kiểm tra trường hợp 7. Bạn có thể đăng ký người nghe sự kiện cho sự kiện này trong nhà cung cấp dịch vụ 59 của bạn
Làm cách nào để lấy tiêu đề từ yêu cầu HTTP PHP?Nhận được tiêu đề yêu cầu, máy chủ web sẽ gửi lại tiêu đề phản hồi HTTP cho máy khách. Đọc bất kỳ tiêu đề yêu cầu. Nó có thể đạt được bằng cách sử dụng hàm getallheaders() . ví dụ 2. Nó có thể đạt được bằng cách sử dụng hàm apache_request_headers().
Làm cách nào để lấy dữ liệu tiêu đề trong PHP?PHP. Hàm get_headers()
. Thông số. Hàm này chấp nhận ba tham số như đã đề cập ở trên và được mô tả bên dưới. $url. Nó là tham số bắt buộc của kiểu string. Nó xác định URL mục tiêu.
Làm cách nào để nhận tiêu đề phản hồi trong PHP?Tiêu đề phản hồi trong cURL
. Điều này hữu ích khi bạn chỉ cần các tiêu đề, nhưng hầu hết thời gian, chúng tôi cũng cần nội dung của yêu cầu. Giải pháp cho vấn đề này cũng nằm trong tùy chọn CURLOPT_HEADER. By setting the CURLOPT_HEADER and CURLOPT_NOBODY options to true, the result of curl_exec() will only contain the headers. This is useful when you only need the headers, but most of the time, we need the content of the request too. The solution to this lies in the CURLOPT_HEADER option as well.
Làm cách nào để kiểm tra yêu cầu HTTP trong PHP?Trình bao bọc luồng HTTP/s của PHP. . Phương thức HTTP để sử dụng (GET) Đường dẫn của yêu cầu ( /services/rest ) Một mảng dữ liệu yêu cầu kết hợp ( $requestData ) |