Giới thiệu về gem Faraday
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. Thêm khai báo sau và Gemfile: gem "faraday" Sau đó chạy lại bundle. Rất dễ dàng để tạo ...
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.
Thêm khai báo sau và Gemfile:
gem "faraday"
Sau đó chạy lại bundle.
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
#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)
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 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"}
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