Genera bibliotecas cliente

Se pone a disposición una versión legible por máquinas del feed de datos de extremo a extremo de pedidos y las definiciones de la API de entrega para generar código fuente del cliente y validar la estructura de los datos JSON. Esto te permite dedicar más tiempo a desarrollar las capacidades de la aplicación y la lógica empresarial necesarias para la integración.

En este ejemplo, usamos la CLI de quicktype para generar una biblioteca cliente fácil de usar.

Descarga los esquemas JSON

Estas versiones de feeds de datos y APIs legibles por máquinas son necesarias para la generación y validación de código.

Generar códigos

Quicktype se puede usar para volver a generar códigos cuando se cambian las APIs, de modo que puedas solo actualizar el código de la aplicación afectado. QuickType admite C++, Java, JavaScript, Python y otros lenguajes de programación.

También puedes usar otras herramientas de generador de código disponibles que admitan definiciones de esquemas JSON para generar las bibliotecas cliente.

Usa el administrador de paquetes de Node (npm) para instalar quicktype en el directorio del proyecto para tu integración de extremo a extremo de pedidos.

npm install quicktype

TypeScript

  1. Genera código fuente de cliente para los feeds de datos de extremo a extremo de pedidos.
    quicktype --lang typescript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./owg-inventory.ts
            
  2. Genera el código fuente del cliente para la API de entrega.
    quicktype --lang typescript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./owg-fulfillment.ts
            
  3. Genera el código fuente del cliente para la API de actualizaciones en tiempo real.
    quicktype --lang typescript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./owg-realtime-updates.ts
            
  4. Copia los archivos generados en tu lugar de trabajo y, luego, implementa tu lógica empresarial.

Uso y validación

Ejemplo de cómo crear entidades y convertirlas a JSON:

import { Convert, Fee, OperationHours, Restaurant, Service, ServiceArea,
    ServiceHours, Menu, MenuSection, Availability, MenuItem, MenuItemOption,
    MenuItemOffer, FeeType, FeeTypeEnum, RestaurantType } from './owg-inventory';

const restaurant: Restaurant = {
    "@id": "McDonalds",
    "@type": RestaurantType.Restaurant,
    "addressCountry": "US",
    "addressLocality": "123 Local",
    "addressRegion": "Region",
    "name": "MacDonald's",
    "postalCode": "1234",
    "streetAddress": "123",
    "telephone": "+15552999983",
    "url": "https://example.com",
    "dateModified": new Date()
}

const fee: Fee = {
    "@id": "123",
    "@type": FeeTypeEnum.Fee,
    "priceCurrency": "US",
    "serviceId": "123",
    "feeType": FeeType.Delivery,
    "dateModified": new Date()
}
const restaurantJson: string = Convert.restaurantToJson(restaurant);
const feeJson: string = Convert.feeToJson(fee);
    

Java

  1. Genera código fuente de cliente para los feeds de datos de extremo a extremo de pedidos.
    quicktype --lang java --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.inventory
            
  2. Genera el código fuente del cliente para la API de entrega.
    quicktype --lang java --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.fulfillment
            
  3. Genera el código fuente del cliente para la API de actualizaciones en tiempo real.
    quicktype --lang java --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.realtime
            
  4. Copia los archivos generados en tu lugar de trabajo y, luego, implementa tu lógica empresarial.

Uso y validación

Ejemplo de cómo crear entidades y convertirlas a JSON:

package com.example;
import com.example.inventory.Converter;
import com.example.inventory.Fee;
import com.example.inventory.FeeType;
import com.example.inventory.Restaurant;
import com.example.inventory.RestaurantType;
public class FoodOrderingResponse {
    public static void main(String[] args) {
        Restaurant restaurant = new Restaurant();
        restaurant.setId("MacDonalds");
        restaurant.setType(RestaurantType.RESTAURANT);
        restaurant.setAddressCountry("US");
        restaurant.setAddressLocality("123 Local");
        restaurant.setAddressRegion("Region");
        restaurant.setName("MacDonald's");
        restaurant.setPostalCode("1234");
        restaurant.setStreetAddress("123");
        restaurant.setTelephone("+15552999983");
        restaurant.setUrl("https://example.com");
        restaurant.setDateModified("2022-09-19T13:10:00.000Z");

        Fee fee = new Fee();
        fee.setId("123");
        fee.setType(FeeTypeEnum.FEE);
        fee.setPriceCurrency("US");
        fee.setServiceId("123");
        fee.setFeeType(FeeType.DELIVERY);
        fee.setDateModified("2022-09-19T13:13:10.000Z");

        String restaurantJson = Converter.RestaurantToJsonString(restaurant);
        String feeJson = Converter.FeeToJsonString(fee);
    }
}
    

JavaScript

  1. Genera código fuente de cliente para los feeds de datos de extremo a extremo de pedidos.
    quicktype --lang javascript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg-inventory.js
            
  2. Genera el código fuente del cliente para la API de entrega.
    quicktype --lang javascript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg-fulfillment.js
            
  3. Genera el código fuente del cliente para la API de actualizaciones en tiempo real.
    quicktype --lang javascript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg-realtime-updates.js
            
  4. Copia los archivos generados en tu lugar de trabajo y, luego, implementa tu lógica empresarial.

Uso y validación

Ejemplo de cómo crear entidades y convertirlas a JSON:

// Converts JSON strings to/from your types
// and asserts the results of JSON.parse at runtime
const Convert = require("./owg-inventory");

const restaurantJson = Convert.restaurantToJson({
    "@id": "McDonalds",
    "@type": 'Restaurant',
    "addressCountry": "US",
    "addressLocality": "123 Local",
    "addressRegion": "Region",
    "name": "MacDonald's",
    "postalCode": "1234",
    "streetAddress": "123",
    "telephone": "+15552999983",
    "url": "https://example.com",
    "dateModified": new Date()
}));

const restaurant = Convert.toRestaurant(restaurantJson);

    

Python

  1. Genera código fuente de cliente para los feeds de datos de extremo a extremo de pedidos.
    quicktype --lang python --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg_inventory.py
            
  2. Genera el código fuente del cliente para la API de entrega.
    quicktype --lang python --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg_fulfillment.py
            
  3. Genera el código fuente del cliente para la API de actualizaciones en tiempo real.
    quicktype --lang python --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg_realtime_updates.py
            
  4. Copia los archivos generados en tu lugar de trabajo y, luego, implementa tu lógica empresarial.

Uso

Ejemplo de cómo crear entidades y convertirlas a JSON:

import json
import owg_inventory

restaurant: owg_inventory.Restaurant = owg_inventory.restaurant_from_dict({
    "@id": "McDonalds",
    "@type": "Restaurant",
    "addressCountry": "US",
    "addressLocality": "123 Local",
    "addressRegion": "Region",
    "name": "MacDonald's",
    "postalCode": "1234",
    "streetAddress": "123",
    "telephone": "+15552999983",
    "url": "https://example.com",
    "dateModified": "2022-09-19T13:10:00.000Z"
})
restaurant_json: str = json.dumps(owg_inventory.restaurant_to_dict(restaurant))