+2

Giới thiệu về gem Faraday

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&param2=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 faradayBasic và Token Authentication. Chúng được định nghĩa trong hai lớp là Faraday::Request::BasicAuthenticationFaraday::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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí