
REST APIs与微服务:关键差异
REST 客户端或具象状态传输客户端是 Web 开发和 API 集成领域中必不可少的工具。这些客户端通过采用 REST 架构原则,实现了应用程序与 Web 服务之间的无缝通信。
REST 客户端是一种软件工具、库或框架,它让开发人员能够通过发出 HTTP 请求并处理响应,与 RESTful Web 服务进行交互。这些客户端简化了连接到 API 的过程,使开发人员能够轻松执行 CRUD(创建、读取、更新和删除)操作、检索数据并根据需要进行操作。
REST 客户端不可或缺的主要原因是它们能够抽象 HTTP 请求和响应的低级细节,从而提供了一种更加用户友好和高效的 API 使用方式。通过使用 REST 客户端,开发人员可以节省时间和精力,使他们能够专注于核心应用程序逻辑和功能。
REST 客户端是极为宝贵的工具,它能让您更简便、更高效地与 RESTful Web 服务进行交互。借助这些客户端,开发人员可以专注于制作卓越的应用程序,同时确保 API 和 Web 服务的无缝集成。
但是,究竟什么是 REST 客户端,为什么它在现代软件开发中如此重要?
以下是需要了解的有关 REST 客户端的关键事项:
如果您想使用实时数据来遵循这些示例,我们建议配置示例应用程序。如果您尚未在 DreamFactory 实例中安装此应用程序,请单击选项卡。在屏幕左侧,单击 Address Book For JavaScript 项目旁边的 。滚动到屏幕底部并单击 按钮。这足以确保将应用程序示例数据集加载到您的 DreamFactory 实例中,但是,如果您想尝试其他功能,您还需要完成上述项目中的其他一些配置步骤。
Address Book for JavaScriptAppsImportSelectImportREADME
无论哪种情况,都可以前往 API 文档,选择服务,然后向下滚动到以下终端节点:db
GET /db/_schema
您应该会看到以下屏幕截图中描述的输出:
如果 GET 请求成功执行,您应该会收到指示成功的响应 Code,以及架构中表的 JSON 表示形式。现在,一些示例数据可用,让我们试验一些 GET 请求。在我们的示例中,我们将使用以下 API 终端节点查询表:200
contact_info
GET https://localhost/api/v2/db/_table/contact_info
对于我们的第一个示例,我们将查看两个简单的 NodeJS 脚本。下面是本机 NodeJS HTTP GET 请求的示例。在您最喜欢的文本编辑器中,创建一个名为 并输入以下代码的新文件: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 实例关联的位置和分配的应用程序 API 密钥后,保存更改并通过终端运行脚本:hostname
x-dreamfactory-api-key
$ node rest.js
现在应该返回了一大块 JSON 数据。如果您想对其进行清理并更仔细地查看数据,可以将响应复制并粘贴到 JSONLint 中。)将数据粘贴到文本区域后,单击 。这将完成两项重要任务:Validate JSON
对于一个简单的 GET 调用来说,这个脚本感觉有点沉重。让我们再次尝试相同的调用,但这次我们将使用 ‘unirest’ 模块。NPM 附带 NodeJS,允许用户安装所谓的 Node 模块。如果您打算在 DreamFactory 中运行任何自定义脚本服务或事件脚本,这个功能也会非常有用。让我们使用 NPM 安装 ‘unirest’ 模块,打开一个 shell 并键入:
$ npm install -g unirest
该选项将全局安装模块。我们建议全局安装 NodeJS 模块,特别是如果您打算在服务器端脚本中使用它们。现在您已经安装了该模块,请打开文本编辑器并粘贴以下代码:-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
和之前一样,您会收到一个详细的 JSON 响应作为回报。但这一次,它用更简洁的代码就实现了,并且还带来了格式化 JSON 的好处!
也许NodeJS并不符合你的偏好,而python更符合。Python 使用该模块使 REST 变得轻而易举。让我们使用 Python 包管理器 pip 安装模块。打开您的终端并执行:
requestsrequests
$ pip install requests
现在模块已安装完毕,让我们再次打开文本编辑器并输入以下代码: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)
确认一切正确后,将文件另存为,然后再次导航到保存脚本的目录并输入: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"},...]}
与其他示例一样,如果所有内容都已正确配置,您将在脚本输出中看到返回的 JSON。
DreamFactory 平台还支持使用 Python(版本 2 和 3)将业务逻辑添加到现有 API 端点,并创建新的独立 API。您可以在 DreamFactory 入门指南中了解有关 DreamFactory 脚本功能的更多信息。
其他读者可能希望使用 PHP 发送 HTTP API 请求。没关系!可以返回到编辑器并输入以下代码:
<?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 客户端库,我可以为您介绍几个。在本节中,我们将介绍两个。让我们首先使用 Ruby 标准库中内置的 which 进行调用。打开文本编辑器并粘贴以下代码: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
保存这些更改并执行脚本,如下所示:
$ ruby rest.rb
现在让我们再试一次,不过这次我们将使用 Ruby gem。这个非常有用的 Ruby gem 声称“让 http 再次变得有趣”,可以在命令行中交互式使用,也可以在 Ruby、Sinatra 和 Ruby on Rails 应用程序中使用。让我们使用 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
保存文件并执行它,如下所示:
$ ruby rest2.rb
让我们来看一个 Perl 示例。首先使用 Perl 的 CPAN 包管理器来安装 Perl 模块。打开您的终端并输入以下命令:REST::Client
$ cpan
进入 cpan shell 后,执行以下命令:
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 团队每天都会使用它来演示各种平台功能。它可以通过 Insomnia 网站免费下载,付费版本(我们使用)允许团队共享 API 调用库。如下面的屏幕截图所示,它非常易于使用。您将确定请求方法(GET、POST 等)、所需的 URL,并传递 API 密钥。配置呼叫后,只需按下 Send 按钮,请求结果就会出现在右侧面板中。
与 Insomnia 一样,Postman 也是一种非常流行的 API 测试工具,具有大量对 API 开发有用的附加功能。它的界面虽然不如 Somnia 那样简洁,但仍然十分易用。如下面的屏幕截图所示。您将确定请求方法,设置 URL 和任何标头,然后按 Send。结果将在底部窗格中输出。
DreamFactory 擅长为您的数据库和服务自动生成 REST API 客户端,从而显著简化开发过程。以下是它的工作原理:
连接到数据源:
自动生成 API:
/api/v2/mysql/_table/{table_name}
自定义生成的 API:
太棒了!因此,您有 7 个快速简单的示例,用于从 DreamFactory REST API 获取和解析数据。您可能已经注意到的另一件事是,API 端点在每次客户端调用中都被重复使用,而且无需编写任何服务器端代码,这真是太棒了!
REST(表述性状态传输)客户端是用于发出 HTTP 请求并与 RESTful Web 服务交互的工具或库。这些客户端使开发人员能够轻松执行 CRUD(创建、读取、更新和删除)操作、检索 API 数据并根据需要对其进行操作。
使用 REST 客户端可以屏蔽掉 HTTP 请求和响应的低级细节,让我们能够更轻松地与 API 进行交互。它们提供了一种更高效、用户友好的方法来测试、调试 API 并将其集成到应用程序中,从而为开发人员节省时间和精力。
一些流行的 REST 客户端工具和库包括:
要使用 REST 客户端检索 API 数据,请执行以下步骤:
不可以,REST 客户端可用于各种 CRUD 操作,包括创建、更新和删除数据。根据使用的 HTTP 方法(POST、PUT、PATCH 或 DELETE),REST 客户端可以对 API 资源执行不同的操作。
虽然 REST 客户端主要用于与 RESTful API 交互,但 Postman 和 Insomnia 等一些客户端也可用于测试和调试非 RESTful API,例如 GraphQL 或基于 SOAP 的 Web 服务。
要确保您的 REST 客户端代码安全高效:
幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台可以通过以下两种方式找到所需API:通过关键词搜索API、或者从API Hub分类页进入寻找。
原文链接:https://blog.dreamfactory.com/7-simple-rest-client-examples-for-retrieving-api-data