Tôi đã sử dụng Guzzle để gọi api bên thứ 3 trong dự án như thế nào

Tram Ho

1. Lời nói đầu:

Vậy thế nào là gọi api bên thứ 3. Các bạn có thể hiểu với một số chức năng đã được code sẵn, xử lý, tối ưu …, việc của chúng ta là đọc hiểu xem nó thực hiện những việc gì và đảm bảo nó cần những input gì, có đôi khi custom, ghi đè để phù hợp, nhưng thường thì trường hợp này rất ít xảy ra. Nói chung các bạn có thể hiểu tôi đã xử lý nó trước cho bạn rồi, việc của bạn là truyền vào input mà tôi cần và bạn sẽ có một output như tôi đã cam kết.

2. Guzzle là gì:

Theo document thì:

Có thể hiểu nó sẽ support bạn dễ dàng tạo ra các querry string, streaming large download, sử dụng HTTP cookies vv… Và nó không phụ thuộc vào cURL, PHP stream, sockets hoặc vòng lặp không bị chặn. Và chắc chắn nó sẽ hỗ trợ middleware rồi :v

3. Cài đặt Guzzle:

Vì nó là một package nên bạn sẽ phải cài nó vào project của mình rồi . Các bạn có thể chạy đoạn lệnh.

Cùng tìm hiểu nó chạy như thế nào qua ví dụ basic:

đầu tiên cơ bản chúng ta có thể xem một ví dụ trên document để cùng hiểu nó hoạt động như thế nào:

Đầu tiên mình sẽ tạo một biến có type là GuzzleHttpClient() tiếp theo mình có thể trỏ đến request mà mình đang hướng đến, ở đây vấn đề chỉ là cú pháp, các bạn sẽ cần chú ý xem yêu cầu đầu vào của api mà mình cần là gì nhé (yaoming). Sau đó các bạn có thể dùng cầu lệnh echo $res->getStatusCode(); để check trạng thái mà code của bạn trả về. Còn cách bạn check là gì thì còn tùy thuộc framework bạn sử dụng là gì đã :v. Và như mình viết ở trên echo $res->getBody(); để lấy ra response của bạn.

Ví dụ:

Kết thúc khóa basic syntax, chúng ta cùng vi vu sang cái gì đó sát với thực tế hơn nhé:

Tôi đang có một server xử lý ảnh, tôi chỉ cần nhập ảnh và server đó sẽ style lại nó theo một trend trên mạng. Việc của tôi bay giờ là nhập một ảnh, khi tôi đã nhập ảnh đó thì nó sẽ gửi ảnh tôi vừa nhập nên server kia, và sẽ trả về response cho tôi một ảnh, việc của tôi là chỉ cần render nó ra thôi. Khá dễ phải không nào.

Ok bắt tay vào làm nào.

Đầu tiên tôi cần kết nối tới server kia, tất nhiên rồi:

Tiếp theo tôi cần có headers. Có thể bên kia sẽ cần một số kiểu dữ liệu đặc biệt thì sao :v.

Ukm hòm hòm rồi đấy công việc của tôi là gửi cái file ảnh đấy đi thôi

OK tất cả đã đầy đủ và giờ tôi chỉ cần lấy cái response này ra nữa thôi:

ok bây giờ chúng ta cùng tổng hợp lại code nào:

ok vậy là xong rồi đấy.

Vậy làm sao để test xem cái request tôi gọi có đúng không :v, ngoài cách check theo getStatusCode() thụ động ở trên các bạn còn có thể check bằng cách:

Middleware

Mình sử dụng framework laravel nên mình cũng không sử dụng middleware của guzzle. Nhưng mà bạn ơi, chúng ta là ai, là developer chứ ai. Việc chúng ta thích là gì, là ngoài phá hoại chúng ta kiếm tìm những thứ mới mẻ để áp dụng và xây dựng project, làm sao cho con bug sau to hơn con bug trước. Nhưng chúng ta sẽ không bao giời từ bỏ, sẽ không bao giời bỏ cuộc tại vì chúng ta đã có “viblo lơi cộng đồ chia sẻ kiến thức”.

theo như document thì middleware có thể hiểu như sau:

các bạn có thể tìm hiểu thêm ở đây: https://docs.guzzlephp.org/en/stable/handlers-and-middleware.html

có thể hiểu đơn giản nó cho phép bạn kiểm soát hành vi của client (yaoming)

Vì mình cũng chưa tìm hiểu sâu về phần này lên cũng không dám múa rìu qua mắt thợ. Nên mình để link bài viết mình đang tìm hiểu tại đây
https://bitpress.io/laravel/php/2017/04/07/laravel-guzzle-6-middleware/

Kết luận:

Đọc tới đây chắc các bạn cũng đã hình dung được Guzzle là gì cũng như cách sử dụng, hoạt động của nó rồi đúng không ạ. Nếu thấy bài viết hay đừng quên để lại 1 like và comment nhé thank !!!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo