Utilice esta herramienta para crear una API sin código

Las interfaces de programación de aplicaciones (API) son como el combustible de la transformación digital, ya que permiten a las empresas desarrollar rápidamente aplicaciones y microservicios. DataTrucker.IO es un nuevo backend de API gratuito y de código abierto (Apache 2.0) sin código/menos código que reduce el tiempo necesario para crear API.

DataTrucker lee configuraciones simples de JSON y YAML y produce el código para convertirlo en una API. Además de crear el código, también aloja el código base en un servidor Node.js y lo pone a disposición del público de inmediato.

DataTrucker maneja la mayoría de las actividades diarias que un desarrollador necesita realizar en un nuevo proyecto, incluyendo:

  • Creación de un punto final de API con lógica comercial específica (usando complementos simples)
  • Aplicación de control de acceso estándar basado en roles (RBAC)
  • Aplicar lógica de autorización
  • Aplicación del endurecimiento en las puntas
  • Gestión de la gestión de diarios
  • Conexión a una variedad de sistemas.
  • Modularizar la lógica empresarial
  • Haz todo con poco o ningún código
Índice

Instalación de DataTrucker

Este tutorial muestra cómo instalar DataTrucker en OpenShift y crear una API para una base de datos de Postgres. El proceso es similar en el entorno de Kubernetes.

[ Download The API owner's manual to learn 7 best practices of effective API programs. ]

Paso 1: crea un espacio de nombres llamado camionero

oc new-project trucker

Paso 2: Descarga e instala la aplicación

DataTrucker.IO está disponible en OperatorHub de OpenShift y se puede agregar a su clúster como operador.

(Gaurav Shankar, CC BY-SA 4.0)

Paso 3: Navega a través de los operadores

Haga clic en los operadores en el panel de navegación izquierdo y abra el DataTrucker.IO Operador.

(Gaurav Shankar, CC BY-SA 4.0)

Paso 4: Cree una configuración de DataTrucker ejecutando el objeto YAML

Cree una reclamación de volumen persistente (PVC) para un backend de base de datos. (Notar: La base de datos de Postgres proporcionada a continuación utiliza Contenedores de datos crujientes para empezar. Recomiendo usar una base de datos con redundancia geográfica reforzada para la carga de trabajo de producción).

  1. Crea un PVC llamado samplepvc.
  2. Cree una instancia de un objeto DatatruckerConfig.
  3. Antes de hacer clic Crear, para asegurar TempDB.enabled es Real en el objeto DatatruckerConfig. Esto es necesario para crear un prototipo de la demostración a continuación.

Puede encontrar un ejemplo en DataTrucker's Repositorio GitLab.

oc apply -f DatatruckerConfig.yaml

El objeto de configuración Kind: DatatruckerConfig crea lo siguiente:

  • Base de datos Postgres: Puede crear un temporal sin curar Datos crujientes base de datos para seguir este tutorial habilitando lo siguiente en la configuración de DataTrucker (recuerde que para una carga de trabajo de producción debe usar una base de datos con redundancia geográfica reforzada):
      TempDB:
        enabled: true
        pvc: samplepvc
  • Configuración de la base de datos: En los sistemas de producción, utilice una base de datos Postgres con redundancia geográfica:
        user: testuser
        password: password
        databasename: userdb
        hostname: db
        type: pg
        port: 5432
  • Configuración criptográfica: Cree la configuración de cifrado:
     API:
        cryptokeys: |-
           ....

    Ver información detallada en el Endurecimiento de fabricación Sección de documentación de DataTrucker.IO.

Paso 5: Cree una conexión y puntos finales de administración

Cree un punto final para obtener un token de conexión:

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 >

Cree un punto final para la administración y las credenciales de RBAC:

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 >

Los elementos anteriores crean las implementaciones y los puntos finales de servicio para la interfaz de usuario (IU) y la API de administración.

Paso 6: exponer el punto final de gestión

Mostrar las rutas:

$ 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

Paso 7: inicie sesión en la interfaz de usuario con un navegador web

  1. Crear un usuario administrador:
    (Gaurav Shankar, CC BY-SA 4.0)
  2. Inicie sesión como usuario administrador:
    (Gaurav Shankar, CC BY-SA 4.0)

Paso 8: Crear credenciales de Postgres para la API

Ahora que DataTrucker está instalado y configurado, está listo para crear una API.

Cree credenciales de Postgres para la base de datos de su elección:

  1. Expanda la barra de navegación izquierda.
  2. Para seleccionar Créditos.
  3. Abre el Credenciales de postgres ventana.
  4. Haga clic en Crear credenciales.
  5. Ingrese los detalles de su base de datos.
(Gaurav Shankar, CC BY-SA 4.0)

Paso 9: Cree una API de Postgres

Cree un objeto de flujo con la siguiente especificación de trabajo.

---
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

Esta especificación crea un nuevo microservicio para alojar la API y el microservicio tiene dos API en su ruta:

  • postgres1:
    • Obtenga la fecha actual y el parámetro enviado por el usuario en SQL
    • Es una solicitud POST
    • Desinfecta la entrada para la variable de entrada del usuario userinput
  • postgres2:
    • Obtiene una lista de tablas disponibles
    • es una solicitud GET

[ Free download: Advanced Linux commands cheat sheet. ]

Ahora busca el servicio:

$. 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

Ahora que tiene una URL, pruébela.

La URL tiene el siguiente formato:

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

En el ejemplo anterior, ha creado dos JobDefinitions:

  • postgres1 de tipo POST
  • postgres2 de tipo GET

Paso 10: Pruebe sus API

Obtenga un token de conexión del punto final de conexión:

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"
}

Ahora use el token de inicio de sesión contra sus API:

  • La primera 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"
    }'
    
    Response:
    {
        "reqCompleted": true,
        "date": "2021-09-05T22:05:58.064Z",
        "reqID": "req-3w",
        "data": {
            "command": "SELECT",
            "rowCount": 1,
            "oid": null,
            "rows": [
               .............
    
    
  • La segunda API:
    curl --location --request GET 'http://my-first-api-trucker.<wilcard.domain>/api/v1/jobs/postgres2' 
    --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    
    Response:
    {
        "reqCompleted": true,
        "date": "2021-09-05T22:03:58.389Z",
        "reqID": "req-35",
        "data": {
            "command": "SELECT",
            "rowCount": 185,
            "oid": null,
            "rows": [
                {
                    " .......
    

Para más información, mira Vídeo de presentación de DataTrucker.IO.


Este artículo está adaptado de Blog de DataTrucker.IO y se vuelve a publicar con permiso.

Subir