
REST APIs與微服務(wù):關(guān)鍵差異
以下是需要了解的有關(guān) REST 客戶端的關(guān)鍵事項:
如果您想使用實時數(shù)據(jù)來遵循這些示例,我們建議配置示例應(yīng)用程序。如果您尚未在 DreamFactory 實例中安裝此應(yīng)用程序,請單擊選項卡。在屏幕左側(cè),單擊 Address Book For JavaScript 項目旁邊的 。滾動到屏幕底部并單擊 按鈕。這足以確保將應(yīng)用程序示例數(shù)據(jù)集加載到您的 DreamFactory 實例中,但是,如果您想嘗試其他功能,您還需要完成上述項目中的其他一些配置步驟。
Address Book for JavaScriptAppsImportSelectImportREADME
無論哪種情況,都可以前往 API 文檔,選擇服務(wù),然后向下滾動到以下終端節(jié)點:db
GET /db/_schema
您應(yīng)該會看到以下屏幕截圖中描述的輸出:
如果 GET 請求成功執(zhí)行,您應(yīng)該會收到指示成功的響應(yīng) Code,以及架構(gòu)中表的 JSON 表示形式。現(xiàn)在,一些示例數(shù)據(jù)可用,讓我們試驗一些 GET 請求。在我們的示例中,我們將使用以下 API 終端節(jié)點查詢表:200
contact_info
GET https://localhost/api/v2/db/_table/contact_info
對于我們的第一個示例,我們將查看兩個簡單的 NodeJS 腳本。下面是本機(jī) NodeJS HTTP GET 請求的示例。在您最喜歡的文本編輯器中,創(chuàng)建一個名為 并輸入以下代碼的新文件:rest.js
const https = require("https");
const options = {
"method": "GET",
"hostname": "example.com",
"port": 443,
"path": "/api/v2/db/_table/contact_info",
"headers": {
"x-dreamfactory-api-key": "YOUR_API_KEY",
"cache-control": "no-cache"
}
}const req = https.request(options, function(res) { var chunks = []; res.on("data", function (chunk) {
chunks.push(chunk);
}); res.on("end", function() {
var body = Buffer.concat(chunks);
console.log(body.toString());
});});
req.end()
更新 and 字段以反映與您的 DreamFactory 實例關(guān)聯(lián)的位置和分配的應(yīng)用程序 API 密鑰后,保存更改并通過終端運行腳本:hostname
x-dreamfactory-api-key
$ node rest.js
現(xiàn)在應(yīng)該返回了一大塊 JSON 數(shù)據(jù)。如果您想對其進(jìn)行清理并更仔細(xì)地查看數(shù)據(jù),可以將響應(yīng)復(fù)制并粘貼到 JSONLint 中。)將數(shù)據(jù)粘貼到文本區(qū)域后,單擊 。這將完成兩項重要任務(wù):Validate JSON
對于一個簡單的 GET 調(diào)用來說,這個腳本感覺有點沉重。讓我們再次嘗試相同的調(diào)用,但這次我們將使用 ‘unirest’ 模塊。NPM 附帶 NodeJS,允許用戶安裝所謂的 Node 模塊。如果您打算在 DreamFactory 中運行任何自定義腳本服務(wù)或事件腳本,這個功能也會非常有用。讓我們使用 NPM 安裝 ‘unirest’ 模塊,打開一個 shell 并鍵入:
$ npm install -g unirest
該選項將全局安裝模塊。我們建議全局安裝 NodeJS 模塊,特別是如果您打算在服務(wù)器端腳本中使用它們。現(xiàn)在您已經(jīng)安裝了該模塊,請打開文本編輯器并粘貼以下代碼:-g
unirest
var unirest = require("unirest")
var req = unirest("GET", "https://example.com/api/v2/db/_table/contact_info")req.headers({
"cache-control": "no-cache",
"x-dreamfactory-api-key": "YOUR_API_KEY"
})
req.end(function (res) {
if (res.error) throw new Error(res.error)
console.log(res.body)
})
將腳本另存為并運行它,如下所示:resty.js
$ node resty.js
和之前一樣,您會收到一個詳細(xì)的 JSON 響應(yīng)作為回報。但這一次,它用更簡潔的代碼就實現(xiàn)了,并且還帶來了格式化 JSON 的好處!
也許NodeJS并不符合你的偏好,而python更符合。Python 使用該模塊使 REST 變得輕而易舉。讓我們使用 Python 包管理器 pip 安裝模塊。打開您的終端并執(zhí)行:
requestsrequests
$ pip install requests
現(xiàn)在模塊已安裝完畢,讓我們再次打開文本編輯器并輸入以下代碼:requests
import requests
url = "https://example.com/api/v2/db/_table/contact_info?limit=5"
headers = {
"cache-control": "no-cache",
"x-dreamfactory-api-key": "YOUR_API_KEY"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
確認(rèn)一切正確后,將文件另存為,然后再次導(dǎo)航到保存腳本的目錄并輸入:rest.py
$ python rest.py
{"resource":[{"id":1,"ordinal":0,"contact_id":1,"info_type":"home","phone":"500 555-
0162","email":"jon24@example.com","address":"3761 N. 14th
St","city":"MEDINA","state":"ND","zip":"58467","country":"USA"},
{"id":2,"ordinal":0,"contact_id":1,"info_type":"work","phone":"500 555-0110","email":"jon24@example.net",
"address":"2243 W St.","city":"MEDINA","state":"ND","zip":"58467","country":"USA"},...]}
與其他示例一樣,如果所有內(nèi)容都已正確配置,您將在腳本輸出中看到返回的 JSON。
DreamFactory 平臺還支持使用 Python(版本 2 和 3)將業(yè)務(wù)邏輯添加到現(xiàn)有 API 端點,并創(chuàng)建新的獨立 API。您可以在 DreamFactory 入門指南中了解有關(guān) DreamFactory 腳本功能的更多信息。
其他讀者可能希望使用 PHP 發(fā)送 HTTP API 請求。沒關(guān)系!可以返回到編輯器并輸入以下代碼:
<?php
$curl = curl_init();curl_setopt_array($curl, [
CURLOPT_URL => "https://example.com/api/v2/db/_table/contact_info?limit=5",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
]);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
"cache-control: no-cache",
"X-DreamFactory-API-Key: YOUR_API_KEY"
]);
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
if ($error) {
echo "cURL error #:" . $error;
} else {
echo $response;
}
將文件另存為 并運行腳本,如下所示:rest.php
$ php rest.php
You can learn more about DreamFactory's scripting abilities in the Getting Started With DreamFactory guide.
Ruby 擁有眾多的 HTTP 客戶端庫,我可以為您介紹幾個。在本節(jié)中,我們將介紹兩個。讓我們首先使用 Ruby 標(biāo)準(zhǔn)庫中內(nèi)置的 which 進(jìn)行調(diào)用。打開文本編輯器并粘貼以下代碼:net/http
require 'uri'
require 'net/http'
url = URI('https://example.com/api/v2/db/_table/contact_info?limit=5')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request['X-DreamFactory-API-Key'] = 'YOUR_API_KEY'
request['cache-control'] = 'no-cache'response = http.request(request)
puts response.read_body
保存這些更改并執(zhí)行腳本,如下所示:
$ ruby rest.rb
現(xiàn)在讓我們再試一次,不過這次我們將使用 Ruby gem。這個非常有用的 Ruby gem 聲稱“讓 http 再次變得有趣”,可以在命令行中交互式使用,也可以在 Ruby、Sinatra 和 Ruby on Rails 應(yīng)用程序中使用。讓我們使用 Ruby 的包管理器來安裝 gem:httparty
httparty
$ gem install httparty
安裝 Gem 后,打開編輯器并將以下代碼粘貼到名為 :httparty
rest2.rb
require 'httparty'
require 'json'
url = 'https://example.com/api/v2/db/_table/contact_info?limit=5'
headers = {
"X-DreamFactory-API-Key" => "YOUR_API_KEY",
"cache-control" => "no-cache"
}
response = HTTParty.get(url, :headers => headers)
json = JSON.parse(response.body)
puts response.body
puts response.message.to_json
保存文件并執(zhí)行它,如下所示:
$ ruby rest2.rb
讓我們來看一個 Perl 示例。首先使用 Perl 的 CPAN 包管理器來安裝 Perl 模塊。打開您的終端并輸入以下命令:REST::Client
$ cpan
進(jìn)入 cpan shell 后,執(zhí)行以下命令:
install REST::Client
安裝完成后,退出shell,打開編輯器,并粘貼以下代碼:REST::Clientcpan
use REST::Client;
my $client = REST::Client->new();
$client->getUseragent()->ssl_opts(verify_hostname => 0);
$client->getUseragent()->ssl_opts(SSL_verify_mode => SSL_VERIFY_NONE);
$client->addHeader('X-DreamFactory-API-Key', 'YOUR_API_KEY');
$client->addHeader('cache-control', 'no-cache');
$client->GET("https://example.com/api/v2/db/_table/contact_info?limit=56");
print $client->responseContent();
保存文件并使用以下命令運行它:
<code>$ perl rest.pl</code>
Insomnia 是一個出色的 API 測試工具,DreamFactory 團(tuán)隊每天都會使用它來演示各種平臺功能。它可以通過 Insomnia 網(wǎng)站免費下載,付費版本(我們使用)允許團(tuán)隊共享 API 調(diào)用庫。如下面的屏幕截圖所示,它非常易于使用。您將確定請求方法(GET、POST 等)、所需的 URL,并傳遞 API 密鑰。配置呼叫后,只需按下 Send 按鈕,請求結(jié)果就會出現(xiàn)在右側(cè)面板中。
與 Insomnia 一樣,Postman 也是一種非常流行的 API 測試工具,具有大量對 API 開發(fā)有用的附加功能。它的界面雖然不如 Somnia 那樣簡潔,但仍然十分易用。如下面的屏幕截圖所示。您將確定請求方法,設(shè)置 URL 和任何標(biāo)頭,然后按 Send。結(jié)果將在底部窗格中輸出。
DreamFactory 擅長為您的數(shù)據(jù)庫和服務(wù)自動生成 REST API 客戶端,從而顯著簡化開發(fā)過程。以下是它的工作原理:
連接到數(shù)據(jù)源:
自動生成 API:
/api/v2/mysql/_table/{table_name}
自定義生成的 API:
太棒了!因此,您有 7 個快速簡單的示例,用于從 DreamFactory REST API 獲取和解析數(shù)據(jù)。您可能已經(jīng)注意到的另一件事是,API 端點在每次客戶端調(diào)用中都被重復(fù)使用,而且無需編寫任何服務(wù)器端代碼,這真是太棒了!
REST(表述性狀態(tài)傳輸)客戶端是用于發(fā)出 HTTP 請求并與 RESTful Web 服務(wù)交互的工具或庫。這些客戶端使開發(fā)人員能夠輕松執(zhí)行 CRUD(創(chuàng)建、讀取、更新和刪除)操作、檢索 API 數(shù)據(jù)并根據(jù)需要對其進(jìn)行操作。
使用 REST 客戶端可以屏蔽掉 HTTP 請求和響應(yīng)的低級細(xì)節(jié),讓我們能夠更輕松地與 API 進(jìn)行交互。它們提供了一種更高效、用戶友好的方法來測試、調(diào)試 API 并將其集成到應(yīng)用程序中,從而為開發(fā)人員節(jié)省時間和精力。
一些流行的 REST 客戶端工具和庫包括:
要使用 REST 客戶端檢索 API 數(shù)據(jù),請執(zhí)行以下步驟:
不可以,REST 客戶端可用于各種 CRUD 操作,包括創(chuàng)建、更新和刪除數(shù)據(jù)。根據(jù)使用的 HTTP 方法(POST、PUT、PATCH 或 DELETE),REST 客戶端可以對 API 資源執(zhí)行不同的操作。
雖然 REST 客戶端主要用于與 RESTful API 交互,但 Postman 和 Insomnia 等一些客戶端也可用于測試和調(diào)試非 RESTful API,例如 GraphQL 或基于 SOAP 的 Web 服務(wù)。
要確保您的 REST 客戶端代碼安全高效:
冪簡集成是國內(nèi)領(lǐng)先的API集成管理平臺,專注于為開發(fā)者提供全面、高效、易用的API集成解決方案。冪簡API平臺可以通過以下兩種方式找到所需API:通過關(guān)鍵詞搜索API、或者從API Hub分類頁進(jìn)入尋找。
原文鏈接:https://blog.dreamfactory.com/7-simple-rest-client-examples-for-retrieving-api-data