สร้างไลบรารีไคลเอ็นต์

ฟีดข้อมูลและการดำเนินการตามคำสั่งซื้อเวอร์ชันที่เครื่องอ่านได้ คำจำกัดความของ API พร้อมใช้งานเพื่อสร้างซอร์สโค้ดของไคลเอ็นต์และตรวจสอบความถูกต้องของ โครงสร้างข้อมูล JSON ทำให้คุณใช้เวลาในการพัฒนา ความสามารถของแอปพลิเคชันและตรรกะทางธุรกิจที่จำเป็นสำหรับการผสานรวม

ในตัวอย่างนี้ เราใช้ quicktype CLI เพื่อสร้างไลบรารีของไคลเอ็นต์ที่ใช้งานง่าย

ดาวน์โหลดสคีมา JSON

ซึ่งจำเป็นต้องใช้ฟีดข้อมูลและ API เวอร์ชันที่เครื่องอ่านได้เหล่านี้สำหรับการสร้างและตรวจสอบโค้ด

สร้างรหัส

Quicktype สามารถใช้ในการสร้างโค้ดใหม่เมื่อ API มีการเปลี่ยนแปลง เพื่อให้คุณสามารถ เพียงอัปเดตโค้ดของแอปพลิเคชันที่ได้รับผลกระทบ QuickType รองรับ C++ Java, JavaScript, Python และภาษาโปรแกรมอื่นๆ

คุณยังใช้เครื่องมือสร้างโค้ดอื่นๆ ที่พร้อมใช้งานซึ่งรองรับสคีมา JSON ได้ด้วย เพื่อสร้างไลบรารีของไคลเอ็นต์

ใช้ตัวจัดการแพ็กเกจโหนด (npm) เพื่อติดตั้ง Quicktype ในไดเรกทอรีโปรเจ็กต์ สำหรับการผสานรวมการสั่งซื้อแบบครบวงจร

npm install quicktype

TypeScript

  1. สร้างซอร์สโค้ดของลูกค้าสำหรับการสั่งซื้อฟีดข้อมูลจากต้นทางถึงปลายทาง
    quicktype --lang typescript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./owg-inventory.ts
            
  2. สร้างซอร์สโค้ดไคลเอ็นต์สำหรับ Fulfillment API
    quicktype --lang typescript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./owg-fulfillment.ts
            
  3. สร้างซอร์สโค้ดของไคลเอ็นต์สำหรับ API การอัปเดตแบบเรียลไทม์
    quicktype --lang typescript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./owg-realtime-updates.ts
            
  4. คัดลอกไฟล์ที่สร้างขึ้นไปยังพื้นที่ทำงานและนำตรรกะทางธุรกิจไปใช้

การใช้งานและการตรวจสอบ

ตัวอย่างการสร้างเอนทิตีและแปลงเป็น 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. สร้างซอร์สโค้ดของลูกค้าสำหรับการสั่งซื้อฟีดข้อมูลจากต้นทางถึงปลายทาง
    quicktype --lang java --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.inventory
            
  2. สร้างซอร์สโค้ดไคลเอ็นต์สำหรับ Fulfillment API
    quicktype --lang java --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.fulfillment
            
  3. สร้างซอร์สโค้ดของไคลเอ็นต์สำหรับ API การอัปเดตแบบเรียลไทม์
    quicktype --lang java --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o ./java/ --no-date-times --package com.example.realtime
            
  4. คัดลอกไฟล์ที่สร้างขึ้นไปยังพื้นที่ทำงานและนำตรรกะทางธุรกิจไปใช้

การใช้งานและการตรวจสอบ

ตัวอย่างการสร้างเอนทิตีและแปลงเป็น 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. สร้างซอร์สโค้ดของลูกค้าสำหรับการสั่งซื้อฟีดข้อมูลจากต้นทางถึงปลายทาง
    quicktype --lang javascript --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg-inventory.js
            
  2. สร้างซอร์สโค้ดไคลเอ็นต์สำหรับ Fulfillment API
    quicktype --lang javascript --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg-fulfillment.js
            
  3. สร้างซอร์สโค้ดของไคลเอ็นต์สำหรับ API การอัปเดตแบบเรียลไทม์
    quicktype --lang javascript --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg-realtime-updates.js
            
  4. คัดลอกไฟล์ที่สร้างขึ้นไปยังพื้นที่ทำงานและนำตรรกะทางธุรกิจไปใช้

การใช้งานและการตรวจสอบ

ตัวอย่างการสร้างเอนทิตีและแปลงเป็น 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. สร้างซอร์สโค้ดของลูกค้าสำหรับการสั่งซื้อฟีดข้อมูลจากต้นทางถึงปลายทาง
    quicktype --lang python --src-lang schema inventory-v2-json-schema.json#top_level_definitions/ -o owg_inventory.py
            
  2. สร้างซอร์สโค้ดไคลเอ็นต์สำหรับ Fulfillment API
    quicktype --lang python --src-lang schema fulfillment-actions-json-schema.json#top_level_definitions/ -o owg_fulfillment.py
            
  3. สร้างซอร์สโค้ดของไคลเอ็นต์สำหรับ API การอัปเดตแบบเรียลไทม์
    quicktype --lang python --src-lang schema realtime-updates-json-schema.json#top_level_definitions/ -o owg_realtime_updates.py
            
  4. คัดลอกไฟล์ที่สร้างขึ้นไปยังพื้นที่ทำงานและนำตรรกะทางธุรกิจไปใช้

การใช้งาน

ตัวอย่างการสร้างเอนทิตีและแปลงเป็น 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))