Générer des bibliothèques clientes

Une version lisible par machine des définitions de l'API de traitement et du flux de données de bout en bout de commande est disponible pour générer le code source client et valider la structure des données JSON. Vous pouvez ainsi consacrer plus de temps au développement des fonctionnalités de l'application et de la logique métier requises pour l'intégration.

Dans cet exemple, nous utilisons la CLI quicktype pour générer une bibliothèque cliente facile à utiliser.

Télécharger les schémas JSON

Ces versions lisibles par machine des flux de données et des API sont nécessaires pour la génération et la validation du code.

Générer des codes

Quicktype peut être utilisé pour générer à nouveau des codes lorsque des API sont modifiées. Vous pouvez ainsi simplement mettre à jour le code de l'application concerné. QuickType est compatible avec C++, Java, JavaScript, Python et d'autres langages de programmation.

Vous pouvez également utiliser d'autres outils de génération de code disponibles compatibles avec les définitions de schéma JSON pour générer les bibliothèques clientes.

Utilisez le gestionnaire de paquets Node (npm) pour installer QuickType dans le répertoire du projet pour votre intégration de bout en bout de commande.

npm install quicktype

TypeScript

  1. Générez le code source client pour les flux de données de bout en bout de commande.
    quicktype --lang typescript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./owg-inventory.ts
            
  2. Générez le code source client pour l'API de traitement.
    quicktype --lang typescript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./owg-fulfillment.ts
            
  3. Générez le code source client pour l'API de mises à jour en temps réel.
    quicktype --lang typescript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./owg-realtime-updates.ts
            
  4. Copiez les fichiers générés dans votre espace de travail et implémentez votre logique métier.

Utilisation et validation

Exemple de création d'entités et de conversion au format 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. Générez le code source client pour les flux de données de bout en bout de commande.
    quicktype --lang java --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.inventory
            
  2. Générez le code source client pour l'API de traitement.
    quicktype --lang java --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.fulfillment
            
  3. Générez le code source client pour l'API de mises à jour en temps réel.
    quicktype --lang java --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.realtime
            
  4. Copiez les fichiers générés dans votre espace de travail et implémentez votre logique métier.

Utilisation et validation

Exemple de création d'entités et de conversion au format 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. Générez le code source client pour les flux de données de bout en bout de commande.
    quicktype --lang javascript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg-inventory.js
            
  2. Générez le code source client pour l'API de traitement.
    quicktype --lang javascript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg-fulfillment.js
            
  3. Générez le code source client pour l'API de mises à jour en temps réel.
    quicktype --lang javascript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg-realtime-updates.js
            
  4. Copiez les fichiers générés dans votre espace de travail et implémentez votre logique métier.

Utilisation et validation

Exemple de création d'entités et de conversion au format 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. Générez le code source client pour les flux de données de bout en bout de commande.
    quicktype --lang python --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg_inventory.py
            
  2. Générez le code source client pour l'API de traitement.
    quicktype --lang python --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg_fulfillment.py
            
  3. Générez le code source client pour l'API de mises à jour en temps réel.
    quicktype --lang python --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg_realtime_updates.py
            
  4. Copiez les fichiers générés dans votre espace de travail et implémentez votre logique métier.

Utilisation

Exemple de création d'entités et de conversion au format 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))