Giới thiệu về gem Faraday
Bài đăng này đã không được cập nhật trong 8 năm
Giới thiệu#
Faraday
là một thư viện HTTP client của Ruby được sử dụng để tạo các HTTP request đến các server của bên thứ ba. Nó thường là được sử dụng để tạo các HTTP request để sử dụng REST API của bên thứ ba.
Cài đặt#
Thêm khai báo sau và Gemfile
:
gem "faraday"
Sau đó chạy lại bundle
.
Cách sử dụng cơ bản#
Rất dễ dàng để tạo một HTTP request như một cleint bằng cách sử dụng phương thức Faraday.get
:
Faraday.get 'http://example.com'
Trong đó http://example.com
là địa chỉ URL mà bạn muốn truy cập.
Một cách khác đó là bạn cũng có thể sử dụng đối tượng của lớp Faraday::Connection
. Khởi tạo đối tượng Faraday::Connection
conn = Faraday.new(:url => 'http://sushi.com') do |faraday|
faraday.request :url_encoded
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
Tiếp theo ta có thể sử dụng đối tượng trên để tạo các HTTP request theo các phương thức như GET, POST, PUT, DELETE Ví dụ tạo request với method GET như sau:
# Tạo GET request đến trang http://sushi.com/nigiri/sake.json?param1=value1¶m2=value2
response = conn.get "/nigiri/sake.json", {param1: value1, param2: value2}
response.body
#Viết trên nhiều dòng.
conn.get do |req|
req.url '/nigiri/sake.json', param1: value1
req.params['param2'] = value2
end
Trong đó các param1, param2
là các tham số của request.
Tương tự ta có cách tạo POST request như sau:
# POST "name=maguro" to http://sushi.com/nigiri
conn.post '/nigiri', { param1: "value1" }
Bên cạnh đó chúng ta cũng có thể gửi tham số theo dạng mảng JSON như sau:
conn.post do |req|
req.url "/nigiri"
req.headers["Content-Type"] = "application/json"
req.body = '{ "param1": "value1", "param2": "value2" }'
end
Ngoài ra, thư viện còn cung cấp một số tùy chọn cho mỗi request như: thời gian đọc tiemout của request hay thời gian timeout của connect. Ví dụ:
conn.get do |req|
req.url '/search'
# open/read timeout in seconds
req.options.timeout = 5
# connection open timeout in seconds
req.options.open_timeout = 2
end
Cách upload file#
#Khởi tạo connection
conn = Faraday.new("http://myapi") do |f|
f.request :multipart
f.request :url_encoded
f.adapter Faraday.default_adapter
end
#Upload file
payload = { :file => Faraday::UploadIO.new('...', 'image/jpeg') }
#Post lên server
conn.post('/', payload)
Authentication#
Có hai kiểu xác thực được hỗ trợ trong faraday
là Basic và Token Authentication. Chúng được định nghĩa trong hai lớp là Faraday::Request::BasicAuthentication
và Faraday::Request::TokenAuthentication
Để sử dụng tính năng xác thực trong faraday
ta làm như sau:
# Khởi tạo connection
conn = Faraday.new("http://myapi") do |f|
f.request :multipart
f.request :url_encoded
f.adapter Faraday.default_adapter
end
# Sử dụng xác thực theo kiểu Basic Authentication
conn.basic_auth "username", "password"
Nếu sử dụng Token Authentication thì sẽ sử dụng phương thức token_auth
như sau:
conn.token_auth "my token"
Kết nối đến Proxies#
Để kết nối đến một proxy bất kỳ với faraday
, ta thực hiện như sau:
Faraday.new proxy: "http://proxy.example.com:80"
Nếu proxy có yêu cầu xác thục thì ta làm như sau:
Faraday.new proxy: { uri: "http://proxy.example.com:8080",
user: "username", password: "password"}
Kết luận#
Trên đây là những giới thiệu cơ bản nhất về gem faraday
.
Để tìm hiểu thêm các bạn có thể tham khảo tại đây:
https://github.com/lostisland/faraday
All rights reserved