這款工具在手,無需代碼即可構(gòu)建API
譯文【51CTO.com快譯】應(yīng)用編程接口(API)好比數(shù)字化轉(zhuǎn)型的燃料,使公司能夠快速開發(fā)應(yīng)用程序和微服務(wù)。 DataTrucker.IO是一個新的免費的開源(Apache 2.0)無代碼/低代碼API后端,縮減了構(gòu)建API所需的時間。
DataTrucker讀取簡單的JSON和YAML配置,生成將其轉(zhuǎn)換為API的代碼。除了創(chuàng)建代碼外,它還在Node.js服務(wù)器上托管代碼庫,使其立即可供公眾使用。
DataTrucker處理開發(fā)人員需要處理新項目的大部分日常活動,包括:
- 創(chuàng)建有指定業(yè)務(wù)邏輯的API端點(使用簡單的插件)
- 運用標準的基于角色的訪問控制(RBAC)
- 運用授權(quán)邏輯
- 在端點上運用加固措施
- 處理日志管理
- 連接到各種系統(tǒng)
- 模塊化業(yè)務(wù)邏輯
- 幾乎無需代碼,處理所有工作
安裝DataTrucker
該教程展示了如何在OpenShift上安裝DataTrucker,并為Postgres數(shù)據(jù)庫構(gòu)建API。整個過程在Kubernetes環(huán)境中大同小異。
第1步:創(chuàng)建名為Trucker的命名空間
- oc new-project trucker
第2步:下載并安裝應(yīng)用程序
DataTrucker.IO在OpenShift的OperatorHub中可以找到,可以作為Operator添加到您的集群中。
第3步:導(dǎo)航到Operators
點擊左側(cè)導(dǎo)航窗格中的Operators,打開DataTrucker.IO Operator。
第4步:運行YAML對象,從而創(chuàng)建DataTrucker配置
為數(shù)據(jù)庫后端創(chuàng)建持久卷聲明(PVC)。注意:下面提供的Postgres數(shù)據(jù)庫使用Crunchy Data容器以便開始上手。建議對生產(chǎn)工作負載使用經(jīng)過加固的地理冗余數(shù)據(jù)庫。
1. 創(chuàng)建名為samplepvc的PVC。
2. 創(chuàng)建DatatruckerConfig對象的實例。
3. 點擊“創(chuàng)建”之前,確保DatatruckerConfig對象中的TempDB.enabled是True。為下面的演示設(shè)計原型需要這么做。
您可以在DataTrucker的GitLab存儲庫中找到示例。
- oc apply -f DatatruckerConfig.yaml
配置對象Kind: DatatruckerConfig創(chuàng)建以下內(nèi)容:
- Postgres數(shù)據(jù)庫:您可以創(chuàng)建臨時的非加固Crunchy Data數(shù)據(jù)庫以遵循該教程,只需在DataTrucker配置中啟用下列參數(shù)(對生產(chǎn)工作負載而言,您應(yīng)該使用加固的地理冗余數(shù)據(jù)庫):
- TempDB:
- enabled: true
- pvc: samplepvc
- 數(shù)據(jù)庫配置:在生產(chǎn)系統(tǒng)中,使用地理冗余的Postgres數(shù)據(jù)庫:
- user: testuser
- password: password
- databasename: userdb
- hostname: db
- type: pg
- port: 5432
- 加密配置:創(chuàng)建加密配置:
- API:
- cryptokeys: |-
- ....
可在DataTrucker.IO文檔的“生產(chǎn)加固”部分查看詳細信息。
- API服務(wù)器后端配置:創(chuàng)建API服務(wù)器后端配置:
- API:
- name: API
- loginServer: |-
- ....
- managementServer: |-
- ....
- jobsServer: |-
- ....
第5步:創(chuàng)建登錄和管理端點
創(chuàng)建一個用于獲取登錄令牌的端點:
- apiVersion: datatrucker.datatrucker.io/v1
- kind: DatatruckerFlow
- metadata:
- name: login-endpoint
- spec:
- Type: Login
- DatatruckerConfig: < the name of the config object created in step 4 >
為RBAC管理和登錄信息創(chuàng)建一個端點:
- apiVersion: datatrucker.datatrucker.io/v1
- kind: DatatruckerFlow
- metadata:
- name: management-endpoint
- spec:
- Type: Management
- DatatruckerConfig: < the name of the config object created in step 4 >
以上幾項為用戶界面(UI)和管理API創(chuàng)建部署和服務(wù)端點。
第6步:公開管理端點
公開路由:
- $ oc get svc | grep endpoint
- login-endpoint ClusterIP 10.217.5.89 <none> 80/TCP 3m43s
- management-endpoint ClusterIP 10.217.5.220 <none> 80/TCP 3m29s
- management-endpoint-ui ClusterIP 10.217.4.42 <none> 80/TCP 3m28s
- $ oc expose svc management-endpoint-ui
- route.route.openshift.io/management-endpoint-ui exposed
- $ oc expose svc login-endpoint
- route.route.openshift.io/login-endpoint exposed
- $ oc get routes
- NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
- login-endpoint login-endpoint-trucker.apps-crc.testing login-endpoint 8080 None
- management-endpoint-ui management-endpoint-ui-trucker.apps-crc.testing management-endpoint-ui 9080 None
第7步:使用Web瀏覽器登錄到UI
1. 創(chuàng)建管理員用戶:
2. 以該管理員用戶的身份登錄
第8步:為API創(chuàng)建Postgres登錄信息
鑒于DataTrucker已安裝和配置,現(xiàn)在可以構(gòu)建API了。
為您選擇的數(shù)據(jù)庫創(chuàng)建Postgres登錄信息:
1. 展開左邊導(dǎo)航欄。
2. 選擇“登錄信息”。
3. 打開“Postgres登錄信息”面板。
4. 點擊“創(chuàng)建登錄信息”。
5. 輸入您的數(shù)據(jù)庫資料。
第9步:創(chuàng)建Postgres API
創(chuàng)建一個Flow對象,附有下列工作規(guī)格。
- ---
- apiVersion: datatrucker.datatrucker.io/v1
- kind: DatatruckerFlow
- metadata:
- name: my-first-api
- spec:
- DatatruckerConfig: datatruckerconfig-sample
- JobDefinitions:
- - credentialname: db < cred name from step 8 >
- job_timeout: 600
- name: postgres1
- restmethod: POST
- script: 'select ''[[userinput]]'' as userinput; ' < query you want to execute>
- tenant: Admin
- type: DB-Postgres
- validations:
- properties:
- userinput:
- maxLength: 18
- pattern: '^[a-z0-9]*$'
- type: string
- type: object
- - credentialname: db < cred name from step 8 >
- job_timeout: 600
- name: postgres2
- restmethod: GET
- script: select * from information_schema.tables < query you want to execute>
- tenant: Admin
- type: DB-Postgres
- Type: Job
該規(guī)格創(chuàng)建新的微服務(wù)以托管API,該微服務(wù)在其路由上有兩個API:
- postgres1:
- 將當(dāng)前日期和用戶發(fā)送的參數(shù)錄入到SQL中
- 這是POST請求
- 為用戶輸入變量userinput凈化輸入
- postgres2:
- 獲得可用表格列表
- 這是GET請求
現(xiàn)在,搜索服務(wù):
- $. oc get svc | grep my-first-api
- my-first-api ClusterIP 10.217.5.116 <none> 80/TCP 45s
- $. oc expose svc my-first-api
- route.route.openshift.io/my-first-api exposed
- $. oc get routes | grep my-first-api
- my-first-api my-first-api-trucker.apps-crc.testing my-first-api 8080 None
您有了URL,可以試一下。
URL在下列表單中:
- http://<your api route>/api/v1/jobs/<name of the JobDefinitions defined in the yaml>
在上述例子中,您創(chuàng)建了兩個JobDefinitions:
- 類型POST的postgres1
- 類型GET的postgres2
第10步:測試您的API
從登錄端點獲得登錄令牌:
- curl --location --request POST 'http://login-endpoint-trucker.<wilcard.domain>/api/v1/login' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "username": "xxx",
- "password": "xxxxxxxx",
- "tenant": "Admin"
- }'
- Response:
- {
- "status": true,
- "username": "xxx",
- "token": "xxxxxxxxxxxx"
- }
現(xiàn)在針對您的API使用登錄令牌:
- 第一個API:
- curl --location --request POST 'http://my-first-api-trucker.<wilcard.domain>/api/v1/jobs/postgres1' \
- --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "userinput": "myfirstresponse"
- }'
響應(yīng):
- {
- "reqCompleted": true,
- "date": "2021-09-05T22:05:58.064Z",
- "reqID": "req-3w",
- "data": {
- "command": "SELECT",
- "rowCount": 1,
- "oid": null,
- "rows": [
- .............
- 第二個API:
- curl --location --request GET 'http://my-first-api-trucker.<wilcard.domain>/api/v1/jobs/postgres2' \
- --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
響應(yīng):
- {
- "reqCompleted": true,
- "date": "2021-09-05T22:03:58.389Z",
- "reqID": "req-35",
- "data": {
- "command": "SELECT",
- "rowCount": 185,
- "oid": null,
- "rows": [
- {
- " .......
原文標題:Use this tool to build an API without code,作者:Gaurav Shankar
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】