这款工具在手,无需代码即可构建API

译文
开发 开发工具
DataTrucker 是一个开源的无代码/低代码后端,使用Kubernetes模板构建API。

[[430681]]

【51CTO.com快译】应用编程接口(API)好比数字化转型的燃料,使公司能够快速开发应用程序和微服务。 DataTrucker.IO是一个新的免费的开源(Apache 2.0)无代码/低代码API后端,缩减了构建API所需的时间。

DataTrucker读取简单的JSON和YAML配置,生成将其转换为API的代码。除了创建代码外,它还在Node.js服务器上托管代码库,使其立即可供公众使用。

DataTrucker处理开发人员需要处理新项目的大部分日常活动,包括:

  • 创建有指定业务逻辑的API端点(使用简单的插件)
  • 运用标准的基于角色的访问控制(RBAC)
  • 运用授权逻辑
  • 在端点上运用加固措施
  • 处理日志管理
  • 连接到各种系统
  • 模块化业务逻辑
  • 几乎无需代码,处理所有工作

安装DataTrucker

该教程展示了如何在OpenShift上安装DataTrucker,并为Postgres数据库构建API。整个过程在Kubernetes环境中大同小异。

第1步:创建名为Trucker的命名空间

  1. oc new-project trucker 

第2步:下载并安装应用程序

DataTrucker.IO在OpenShift的OperatorHub中可以找到,可以作为Operator添加到您的集群中。

第3步:导航到Operators

点击左侧导航窗格中的Operators,打开DataTrucker.IO Operator。

第4步:运行YAML对象,从而创建DataTrucker配置

为数据库后端创建持久卷声明(PVC)。注意:下面提供的Postgres数据库使用Crunchy Data容器以便开始上手。建议对生产工作负载使用经过加固的地理冗余数据库。

1. 创建名为samplepvc的PVC。

2. 创建DatatruckerConfig对象的实例。

3. 点击“创建”之前,确保DatatruckerConfig对象中的TempDB.enabled是True。为下面的演示设计原型需要这么做。

您可以在DataTrucker的GitLab存储库中找到示例。

  1. oc apply -f DatatruckerConfig.yaml 

配置对象Kind: DatatruckerConfig创建以下内容:

  • Postgres数据库:您可以创建临时的非加固Crunchy Data数据库以遵循该教程,只需在DataTrucker配置中启用下列参数(对生产工作负载而言,您应该使用加固的地理冗余数据库):
  1. TempDB: 
  2.    enabled: true 
  3.    pvc: samplepvc 
  • 数据库配置:在生产系统中,使用地理冗余的Postgres数据库:
  1. user: testuser 
  2.   passwordpassword 
  3.   databasename: userdb 
  4.   hostname: db 
  5.   type: pg 
  6.   port: 5432 
  • 加密配置:创建加密配置:
  1. API: 
  2.    cryptokeys: |- 
  3.       .... 

可在DataTrucker.IO文档的“生产加固”部分查看详细信息。

  • API服务器后端配置:创建API服务器后端配置:
  1. API: 
  2.    name: API 
  3.    loginServer: |- 
  4.       .... 
  5.    managementServer: |- 
  6.       .... 
  7.    jobsServer: |- 
  8.       .... 

第5步:创建登录和管理端点

创建一个用于获取登录令牌的端点:

  1. apiVersion: datatrucker.datatrucker.io/v1 
  2. kind: DatatruckerFlow 
  3. metadata: 
  4.   name: login-endpoint 
  5. spec: 
  6.   Type: Login   
  7.   DatatruckerConfig: < the name of the config object created in step 4 > 

为RBAC管理和登录信息创建一个端点:

  1. apiVersion: datatrucker.datatrucker.io/v1 
  2. kind: DatatruckerFlow 
  3. metadata: 
  4.   name: management-endpoint 
  5. spec:   
  6.   Type: Management   
  7.   DatatruckerConfig: < the name of the config object created in step 4 > 

以上几项为用户界面(UI)和管理API创建部署和服务端点。

第6步:公开管理端点

公开路由:

  1. $ oc get svc | grep endpoint 
  2. login-endpoint                                            ClusterIP   10.217.5.89    <none>        80/TCP     3m43s 
  3. management-endpoint                                       ClusterIP   10.217.5.220   <none>        80/TCP     3m29s 
  4. management-endpoint-ui                                    ClusterIP   10.217.4.42    <none>        80/TCP     3m28s 
  5.  
  6.  
  7. $ oc expose svc management-endpoint-ui 
  8. route.route.openshift.io/management-endpoint-ui exposed 
  9.  
  10. $ oc expose svc login-endpoint 
  11. route.route.openshift.io/login-endpoint exposed 
  12.  
  13.  
  14. $ oc get routes       
  15. NAME                     HOST/PORT                                         PATH   SERVICES                 PORT   TERMINATION   WILDCARD 
  16. login-endpoint           login-endpoint-trucker.apps-crc.testing                  login-endpoint           8080                 None 
  17. management-endpoint-ui   management-endpoint-ui-trucker.apps-crc.testing          management-endpoint-ui   9080                 None 

第7步:使用Web浏览器登录到UI

1. 创建管理员用户:

2. 以该管理员用户的身份登录

第8步:为API创建Postgres登录信息

鉴于DataTrucker已安装和配置,现在可以构建API了。

为您选择的数据库创建Postgres登录信息:

1. 展开左边导航栏。

2. 选择“登录信息”。

3. 打开“Postgres登录信息”面板。

4. 点击“创建登录信息”。

5. 输入您的数据库资料。

第9步:创建Postgres API

创建一个Flow对象,附有下列工作规格。

  1. --- 
  2. apiVersion: datatrucker.datatrucker.io/v1 
  3. kind: DatatruckerFlow 
  4. metadata: 
  5.   name: my-first-api 
  6. spec: 
  7.   DatatruckerConfig: datatruckerconfig-sample 
  8.   JobDefinitions: 
  9.     - credentialname: db   < cred name from step 8 > 
  10.       job_timeout: 600 
  11.       name: postgres1 
  12.       restmethod: POST 
  13.       script: 'select ''[[userinput]]'' as userinput; '  < query you want to execute
  14.       tenant: Admin 
  15.       type: DB-Postgres 
  16.       validations: 
  17.         properties: 
  18.           userinput: 
  19.             maxLength: 18 
  20.             pattern: '^[a-z0-9]*$' 
  21.             type: string 
  22.         type: object 
  23.     - credentialname: db < cred name from step 8 > 
  24.       job_timeout: 600 
  25.       name: postgres2 
  26.       restmethod: GET 
  27.       script: select * from information_schema.tables < query you want to execute
  28.       tenant: Admin 
  29.       type: DB-Postgres 
  30.   Type: Job 

该规格创建新的微服务以托管API,该微服务在其路由上有两个API:

  • postgres1:
  1. 将当前日期和用户发送的参数录入到SQL中
  2. 这是POST请求
  3. 为用户输入变量userinput净化输入
  • postgres2:
  1. 获得可用表格列表
  2. 这是GET请求

现在,搜索服务:

  1. $. oc get svc | grep my-first-api  
  2. my-first-api                                              ClusterIP   10.217.5.116   <none>        80/TCP     45s 
  3.  
  4. $. oc expose svc my-first-api 
  5. route.route.openshift.io/my-first-api exposed 
  6.  
  7. $. oc get routes  | grep my-first-api 
  8. my-first-api             my-first-api-trucker.apps-crc.testing                    my-first-api             8080                 None 

您有了URL,可以试一下。

URL在下列表单中:

  1. http://<your api route>/api/v1/jobs/<name of the JobDefinitions defined in the yaml> 

在上述例子中,您创建了两个JobDefinitions:

  • 类型POST的postgres1
  • 类型GET的postgres2

第10步:测试您的API

从登录端点获得登录令牌:

  1. curl --location --request POST 'http://login-endpoint-trucker.<wilcard.domain>/api/v1/login' \ 
  2. --header 'Content-Type: application/json' \ 
  3. --data-raw '{ 
  4.  "username""xxx"
  5.  "password""xxxxxxxx"
  6.  "tenant""Admin" 
  7. }' 
  8.  
  9. Response: 
  10.     "status"true
  11.     "username""xxx"
  12.     "token""xxxxxxxxxxxx" 

现在针对您的API使用登录令牌:

  • 第一个API:
  1. curl --location --request POST 'http://my-first-api-trucker.<wilcard.domain>/api/v1/jobs/postgres1' \ 
  2. --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \ 
  3. --header 'Content-Type: application/json' \ 
  4. --data-raw '{ 
  5.     "userinput""myfirstresponse" 
  6. }' 

响应:

  1.     "reqCompleted"true
  2.     "date""2021-09-05T22:05:58.064Z"
  3.     "reqID""req-3w"
  4.     "data": { 
  5.         "command""SELECT"
  6.         "rowCount": 1, 
  7.         "oid"null
  8.         "rows": [ 
  9.            ............. 
  • 第二个API:
  1. curl --location --request GET 'http://my-first-api-trucker.<wilcard.domain>/api/v1/jobs/postgres2' \ 
  2. --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  

响应:

  1.     "reqCompleted"true
  2.     "date""2021-09-05T22:03:58.389Z"
  3.     "reqID""req-35"
  4.     "data": { 
  5.         "command""SELECT"
  6.         "rowCount": 185, 
  7.         "oid"null
  8.         "rows": [ 
  9.             { 
  10.                 " ....... 

原文标题:Use this tool to build an API without code,作者:Gaurav Shankar

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2020-10-10 14:57:16

代码开发工具

2022-06-17 09:08:27

代码Python内置库

2024-11-04 11:02:56

2020-07-17 13:01:44

If-Else代码编程

2021-09-18 10:45:58

Windows 11Windows微软

2009-10-15 10:04:57

无线直连

2014-10-31 14:25:39

2020-12-31 10:29:05

数据可视化可视化工具编码

2022-06-16 13:43:45

漏洞黑客网络攻击

2024-12-20 08:00:00

2020-11-16 08:00:00

开发编辑器VS Code

2021-03-03 21:10:24

微软漏洞攻击

2022-08-31 15:48:26

插件开发

2021-02-22 11:35:43

网络数据技术

2020-09-18 18:18:10

代码开发工具

2021-10-31 15:24:25

Windows 11Windows微软

2024-04-06 15:27:56

2021-04-24 21:00:22

谷歌Android 11语音助手

2022-05-05 07:01:09

可视化代码执行工具

2020-04-10 09:05:40

iOS功能代码
点赞
收藏

51CTO技术栈公众号