javascript - OpenAPI - hur man sätter en egenskap som sträng eller array, och om array följer #ref
Jag har följande OpenAPI-specdel:
* type:
* - string
* - array
* items:
* $ref: '#/components/schemas/objectType'
Jag har ett inmatningsvärde som kan vara en tom sträng eller en array av objekt. När jag genererar modellen ovan ger det mig följande typ:
string | any[]
Men det jag behöver är:
string | objectType[]
Vad gör jag för fel?
Svar #1
Jag tror att du vill använda egenskapen oneOf. Här är ett litet exempel på dokument som jag tror gör det du letar efter.
notera: oneOf är en array av objekt som var och en deklarerar en hel schematyp, snarare än en array av typer intill en items-deklaration som i din kod. Denna inbäddning är viktig och möjliggör uttryck av godtyckligt komplexa unionstyper.
openapi: 3.0.1
info:
title: Test API
version: 1.0.0
paths:
/foo:
get:
responses:
200:
description: "OK"
content:
application/json:
schema:
oneOf: # <--- create a union type
- type: string # <--- string |
- type: array # <--- FooResponseObject[]
items:
$ref: "#/components/schemas/FooResponseObject"
components:
schemas:
FooResponseObject:
type: object
properties:
id:
type: string
name:
type: string
