Generare librerie client

Viene messa a disposizione una versione leggibile dal computer delle definizioni dell'API di evasione degli ordini e del feed di dati end-to-end per generare il codice sorgente del client e convalidare la struttura dei dati JSON. In questo modo, puoi dedicare più tempo allo sviluppo delle funzionalità dell'applicazione e della logica di business necessarie per l'integrazione.

In questo esempio utilizziamo quicktype CLI per generare una libreria client facile da usare.

Scarica gli schemi JSON

Queste versioni leggibili dalla macchina di feed di dati e API sono necessarie per la generazione e la convalida del codice.

Genera codici

Quicktype può essere utilizzato per rigenerare i codici quando le API vengono modificate, in modo da poter semplicemente aggiornare il codice dell'applicazione interessato. QuickType supporta C++, Java, JavaScript, Python e altri linguaggi di programmazione.

Puoi anche utilizzare altri strumenti di generazione di codice disponibili che supportano le definizioni di schema JSON per generare le librerie client.

Utilizza Node Package Manager (npm) per installare quicktype nella directory del progetto per l'integrazione end-to-end di Ordering.

npm install quicktype

TypeScript

  1. Genera il codice sorgente del client per i feed di dati end-to-end di ordini.
    quicktype --lang typescript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./owg-inventory.ts
            
  2. Genera il codice sorgente del client per l'API di evasione degli ordini.
    quicktype --lang typescript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./owg-fulfillment.ts
            
  3. Genera il codice sorgente del client per l'API di aggiornamento in tempo reale.
    quicktype --lang typescript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./owg-realtime-updates.ts
            
  4. Copia i file generati nel tuo spazio di lavoro e implementa la logica di business.

Utilizzo e convalida

Esempio di creazione di entità e conversione in 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 il codice sorgente del client per i feed di dati end-to-end di ordini.
    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 il codice sorgente del client per l'API di evasione degli ordini.
    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 il codice sorgente del client per l'API di aggiornamento in tempo reale.
    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 i file generati nel tuo spazio di lavoro e implementa la logica di business.

Utilizzo e convalida

Esempio di creazione di entità e conversione in 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 il codice sorgente del client per i feed di dati end-to-end di ordini.
    quicktype --lang javascript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg-inventory.js
            
  2. Genera il codice sorgente del client per l'API di evasione degli ordini.
    quicktype --lang javascript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg-fulfillment.js
            
  3. Genera il codice sorgente del client per l'API di aggiornamento in tempo reale.
    quicktype --lang javascript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg-realtime-updates.js
            
  4. Copia i file generati nel tuo spazio di lavoro e implementa la logica di business.

Utilizzo e convalida

Esempio di creazione di entità e conversione in 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 il codice sorgente del client per i feed di dati end-to-end di ordini.
    quicktype --lang python --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg_inventory.py
            
  2. Genera il codice sorgente del client per l'API di evasione degli ordini.
    quicktype --lang python --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg_fulfillment.py
            
  3. Genera il codice sorgente del client per l'API di aggiornamento in tempo reale.
    quicktype --lang python --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg_realtime_updates.py
            
  4. Copia i file generati nel tuo spazio di lavoro e implementa la logica di business.

Utilizzo

Esempio di creazione di entità e conversione in 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))