Unirest – Thư viện http request gọn nhẹ dành cho nhiều ngôn ngữ
Trong công việc hiện nay, hẳn mọi người khá hay gặp các task phải dùng đến http request (liên quan đến web-services, api). Có rất nhiều thư viện ở nhiều ngôn ngữ hỗ trợ cho việc này. Tuy nhiên, việc mỗi ngôn ngữ sử dụng một thư viện khác nhau có thể dẫn đến khó khăn khi mọi người chuyển qua dùng ngôn ngữ khác, vì sẽ phải đọc lại cách dùng của thư viện mới. Vì vậy, hôm nay, em xin giới thiệu thư viện Unirest, một thư viện hỗ trợ cho khá nhiều ngôn ngữ trong việc thực hiện các công việc liên quan đến http requests. Vì công ty mình chủ yếu dùng 2 ngôn ngữ là php và ruby nên em sẽ chỉ trích dẫn phần ví dụ cho 2 ngôn ngữ này. Ngoài ra, Unirest còn hỗ trợ các ngôn ngữ khác như : Java, .Net, Python, Objective-C …
I. Giới thiệu chung:
Trang chủ: http://unirest.io
Unirest là một thư viện http request gọn nhẹ, hỗ trợ đa ngôn ngữ, được tạo ra bởi một nhóm lập trình viên thuộc công ty Mashape Inc (https://www.mashape.com/) – một công ty sở hữu một thư viện api cực lớn với hảng tỷ lượt truy cập api từ lúc thành lập (2009)
II. Ưu và nhược điểm:
– Ưu điểm:
+ Hỗ trợ nhiều ngôn ngữ – với việc hỗ trợ nhiều ngôn ngữ, developers có thể dễ dàng làm quen khi chuyển qua sử dụng ngôn ngữ khác
+ Cú pháp đơn giản, dễ sử dụng, gọn nhẹ
+ Dễ cài đặt, hướng dẫn rõ ràng
+ Hỗ trợ các http request cơ bản, có thể dùng cho hầu hết các tác vụ liên quan đến http request
– Nhược điểm:
+ Không hỗ trợ cookie (so với curl)
III. Ví dụ:
– Post request cơ bản
PHP:
$response = Unirest::post("http://httpbin.org/post", array( "Accept" => "application/json" ), array( "parameter" => 23, "foo" => "bar" ) ); $response->code; // HTTP Status code $response->headers; // Headers $response->body; // Parsed body $response->raw_body; // Unparsed body
Ruby:
response = Unirest.post "http://httpbin.org/post", headers:{ "Accept" => "application/json" }, parameters:{ :age => 23, :foo => "bar" } response.code # Status code response.headers # Response headers response.body # Parsed body response.raw_body # Unparsed body
– Upload file:
PHP:
$response = Unirest::post("http://httpbin.org/post", array( "Accept" => "application/json" ), array( "file" => "@/tmp/file.txt" ) );
Ruby:
response = Unirest.post "http://httpbin.org/post", headers:{ "Accept" => "application/json" }, parameters:{ :age => 23, :file => File.new("/path/to/file", 'rb') }
– Các cấu trúc request khác :
PHP:
Unirest::get($url, $headers = array(), $parameters = NULL, $username = NULL, $password = NULL) Unirest::post($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL) Unirest::put($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL) Unirest::patch($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL) Unirest::delete($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL)
Ruby:
Unirest.get(url, headers: {}, parameters: nil, auth:nil, &callback) Unirest.post(url, headers: {}, parameters: nil, auth:nil, &callback) Unirest.delete(url, headers: {}, parameters: nil, auth:nil, &callback) Unirest.put(url, headers: {}, parameters: nil, auth:nil, &callback) Unirest.patch(url, headers: {}, parameters: nil, auth:nil, &callback)