Cách sử dụng CURL để gửi yêu cầu API

Trong bài viết này, chúng ta sẽ thảo luận về cách sử dụng curl để tương tác với các API RESTful. curl là một tiện ích dòng lệnh có thể được sử dụng để gửi yêu cầu đến một API.

Các yêu cầu API được tạo thành từ bốn phần khác nhau:

  • Điểm cuối. Đây là URL mà chúng tôi gửi yêu cầu đến.
  • Phương thức HTTP. Hành động mà chúng tôi muốn thực hiện. Các phương pháp phổ biến nhất là GET POST PUT DELETEPATCH
  • Các tiêu đề. Các tiêu đề mà chúng tôi muốn gửi cùng với yêu cầu của chúng tôi, ví dụ: tiêu đề ủy quyền.
  • Cơ thể. Dữ liệu chúng tôi muốn gửi đến api.


Cú pháp curl

Cú pháp cho dấu curl lệnh là:


curl [options] [URL...]

Các tùy chọn mà chúng tôi sẽ đề cập trong bài đăng này là:

  • -X hoặc --request - Phương thức HTTP sẽ được sử dụng
  • -i hoặc --include - Bao gồm các tiêu đề phản hồi
  • -d hoặc --data - Dữ liệu được gửi đến API
  • -H hoặc --header - Bất kỳ tiêu đề bổ sung nào sẽ được gửi


HTTP GET

Phương thức GET được sử dụng để lấy một tài nguyên từ một máy chủ. Trong curl, phương thức GET là phương thức mặc định, vì vậy chúng ta không cần chỉ định nó.


Thí dụ:

curl https://jsonplaceholder.typicode.com/posts

TẢI với các tham số truy vấn

Chúng tôi cũng có thể gửi các tham số truy vấn cùng với curl NHẬN yêu cầu.

Thí dụ:

curl https://jsonplaceholder.typicode.com/posts?userId=5

ĐĂNG HTTP

Phương thức POST được sử dụng để tạo nên một tài nguyên trên máy chủ.


Để gửi curl Yêu cầu ĐĂNG chúng tôi sử dụng tùy chọn -X POST.

ĐĂNG dữ liệu biểu mẫu

Thí dụ:

curl -X POST -d 'userId=5&title=Post Title&body=Post content.' https://jsonplaceholder.typicode.com/posts

Theo mặc định, curl sử dụng Content-Type: application/x-www-form-urlencoded như là Content-Type tiêu đề, vì vậy chúng tôi không cần chỉ định nó khi gửi dữ liệu biểu mẫu.

ĐĂNG JSON

Để ĐĂNG một JSON bằng curl chúng ta phải xác định Content-Type dưới dạng application/json.


Thí dụ:

curl -X POST -H 'Content-Type: application/json'
-d '{'userId': 5, 'title': 'Post Title', 'body': 'Post content.'}'
https://jsonplaceholder.typicode.com/posts


HTTP PUT

Phương pháp PUT được sử dụng để cập nhật hoặc là thay thế một tài nguyên trên máy chủ. Nó thay thế tất cả dữ liệu của tài nguyên được chỉ định bằng dữ liệu yêu cầu được cung cấp.

Ghi chú:Đối với một yêu cầu PUT, chúng tôi phải cung cấp tất cả dữ liệu trong phần thân yêu cầu.

Để gửi curl Yêu cầu PUT chúng tôi sử dụng tùy chọn -X PUT.

Thí dụ:


curl -X PUT -H 'Content-Type: application/json'
-d '{'userId': 5, 'title': 'New Post Title', 'body': 'New post content.'}'
https://jsonplaceholder.typicode.com/posts/5

Yêu cầu PUT ở trên sẽ thay thế bài đăng đã tạo trước đây của chúng tôi bằng “Tiêu đề bài đăng mới” và “Nội dung bài đăng mới”.



HTTP PATCH

Phương pháp PATCH được sử dụng để thực hiện cập nhật từng phần tới tài nguyên trên máy chủ.

Ghi chú:Đối với yêu cầu PATCH, chúng tôi không phải cung cấp tất cả dữ liệu. Chúng tôi chỉ gửi dữ liệu chúng tôi muốn cập nhật.

Để gửi curl Yêu cầu PATCH chúng tôi sử dụng tùy chọn -X PATCH.

Thí dụ:


curl -X PATCH -H 'Content-Type: application/json'
-d '{'userId': 5, 'body': 'Updated post content.'}'
https://jsonplaceholder.typicode.com/posts/5

Lưu ý rằng chúng tôi chỉ gửi phần nội dung có 'Nội dung bài đăng được cập nhật' vì chúng tôi đang thực hiện cập nhật một phần.



XÓA HTTP

Phương thức DELETE được sử dụng để loại bỏ tài nguyên được chỉ định khỏi máy chủ.

Để gửi curl Yêu cầu XÓA chúng tôi sử dụng tùy chọn -X DELETE.

curl -X DELETE https://jsonplaceholder.typicode.com/posts/5 Ghi chú:Phương thức DELETE không có nội dung.

Xác thực

Đôi khi một điểm cuối API đã hạn chế quyền truy cập và sẽ chỉ gửi yêu cầu đến những người dùng đã được xác thực và được ủy quyền. Đối với những yêu cầu này, chúng tôi phải cung cấp mã thông báo truy cập trong tiêu đề của yêu cầu.

Để gửi curl tiêu đề, chúng tôi sử dụng: -H Lựa chọn.

Yêu cầu sau sẽ gửi yêu cầu POST với mã thông báo mang trong tiêu đề:

curl -X POST https://some-web-url/api/v1/users -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer {ACCESS_TOKEN}' -H 'cache-control: no-cache' -d '{ 'username' : 'myusername', 'email' : 'myusername@gmail.com', 'password' : 'Passw0rd123!' }'

Phần kết luận

Trong bài đăng này, chúng ta đã học cách gửi các yêu cầu HTTP (GET, POST, PUT, PATCH và DELETE) tới một API bằng cách sử dụng các lệnh curl.