İstemci kitaplıkları oluşturma

İstemci kaynak kodu oluşturmak ve JSON verilerinin yapısını doğrulamak için Sipariş Verme Uçtan Uca veri feed'inin ve sipariş karşılama API'si tanımlarının makine tarafından okunabilir bir sürümü kullanıma sunulmuştur. Bu sayede entegrasyon için gereken uygulama özelliklerini ve iş mantığını geliştirmeye daha fazla zaman ayırabilirsiniz.

Bu örnekte, kullanımı kolay bir istemci kitaplığı oluşturmak için quicktype KSA kullanılmıştır.

JSON Şemalarını indirin

Veri feed'lerinin ve API'lerin makine tarafından okunabilen bu sürümleri, kod oluşturmak ve doğrulamak için gereklidir.

Kod oluştur

Quicktype, API'ler değiştirildiğinde kodları yeniden oluşturmak için kullanılabilir. Böylece, etkilenen uygulama kodunu kolayca güncelleyebilirsiniz. QuickType; C++, Java, JavaScript, Python ve diğer programlama dillerini destekler.

İstemci kitaplıklarını oluşturmak için JSON Şeması tanımlarını destekleyen diğer kod oluşturma araçlarını da kullanabilirsiniz.

Sipariş Verme Uçtan Uca entegrasyonunuz için proje dizinine Quicktype'ı yüklemek için Düğüm paketi yöneticisini (npm) kullanın.

npm install quicktype

TypeScript

  1. Uçtan Uca veri feed'leri Sipariş Verme için istemci kaynak kodu oluşturun.
    quicktype --lang typescript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./owg-inventory.ts
            
  2. Karşılama API'sı için istemci kaynak kodu oluşturma.
    quicktype --lang typescript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./owg-fulfillment.ts
            
  3. Gerçek zamanlı güncellemeler API'si için istemci kaynak kodu oluşturur.
    quicktype --lang typescript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./owg-realtime-updates.ts
            
  4. Oluşturulan dosyaları çalışma alanınıza kopyalayın ve iş mantığınızı uygulayın.

Kullanım ve doğrulama

Varlık oluşturma ve bunları JSON'a dönüştürme örneği:

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. Uçtan Uca veri feed'leri Sipariş Verme için istemci kaynak kodu oluşturun.
    quicktype --lang java --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.inventory
            
  2. Karşılama API'sı için istemci kaynak kodu oluşturma.
    quicktype --lang java --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.fulfillment
            
  3. Gerçek zamanlı güncellemeler API'si için istemci kaynak kodu oluşturur.
    quicktype --lang java --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.realtime
            
  4. Oluşturulan dosyaları çalışma alanınıza kopyalayın ve iş mantığınızı uygulayın.

Kullanım ve doğrulama

Varlık oluşturma ve bunları JSON'a dönüştürme örneği:

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. Uçtan Uca veri feed'leri Sipariş Verme için istemci kaynak kodu oluşturun.
    quicktype --lang javascript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg-inventory.js
            
  2. Karşılama API'sı için istemci kaynak kodu oluşturma.
    quicktype --lang javascript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg-fulfillment.js
            
  3. Gerçek zamanlı güncellemeler API'si için istemci kaynak kodu oluşturur.
    quicktype --lang javascript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg-realtime-updates.js
            
  4. Oluşturulan dosyaları çalışma alanınıza kopyalayın ve iş mantığınızı uygulayın.

Kullanım ve doğrulama

Varlık oluşturma ve bunları JSON'a dönüştürme örneği:

// 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. Uçtan Uca veri feed'leri Sipariş Verme için istemci kaynak kodu oluşturun.
    quicktype --lang python --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg_inventory.py
            
  2. Karşılama API'sı için istemci kaynak kodu oluşturma.
    quicktype --lang python --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg_fulfillment.py
            
  3. Gerçek zamanlı güncellemeler API'si için istemci kaynak kodu oluşturur.
    quicktype --lang python --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg_realtime_updates.py
            
  4. Oluşturulan dosyaları çalışma alanınıza kopyalayın ve iş mantığınızı uygulayın.

Kullanım

Varlık oluşturma ve bunları JSON'a dönüştürme örneği:

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