首页 > 解决方案 > 任何人都可以在这个 YAML 文件中为我识别错误吗?

问题描述

我无法从它告诉我的内容中找到错误:

243
should match exactly one schema in oneOf
244
should be equal to one of the allowed values allowedValues: query, header,     cookie

244 错误有点奇怪,因为他说如果我用查询替换路径,我应该使用有效语句之一,然后在错误代码中写入查询路径而不是查询路径。

如果我有IstGeloescht参数,这个错误就会出现。当我删除整个块时,它很好,但据我所知它应该是正确的。由于我已经看到一些错误被隐藏并且仅在我们修复其他问题时才会出现,因此我决定向您展示所有代码。

openapi: 3.0.0
servers: []
info:
  description:  REST API
  version: "1.0.0"
  title:  REST API
  contact:
    email: info@lala.net
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
tags:
  - name: Adresse
    description: Adressendpunkt der REST API

路径:

/v2/ADR/地址:

get:
  tags:
    - Adresse
  summary: Gibt alle Adressen zurück.
  operationId: V2ADRAdresseGet
  description: |
    Gibt alle Adressen der zurück.
  parameters:
    - $ref: '#/components/parameters/Sort'
    - $ref: '#/components/parameters/Limit'
    - $ref: '#/components/parameters/Offset'
    - $ref: '#/components/parameters/Filter'
    - $ref: '#/components/parameters/Depth'
    - $ref: '#/components/parameters/Fields'
    - $ref: '#/components/parameters/IstGeloescht'

  responses:
    '200':
      description: search results matching criteria
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/adresseModell'
    '400':
      description: bad input parameter

成分:

模式:

adresseModell: 
  required: 
    - Name
    - PLZ
    - Ort
  type: object
  properties: 
    AdressNr: 
      format: int32
      type: integer
    Name: 
      description: "Beinhaltet Firmenname bei Firmenadressen"
      maxLength: 40
      type: string
    Vorname: 
      description: Optional
      maxLength: 40
      type: string
    Strasse: 
      description: Optional
      maxLength: 40
      type: string
    PLZ: 
      maxLength: 10
      type: string
    Ort: 
      maxLength: 40
      type: string
    Geloescht: 
      description: "Kann nicht gefiltert werden, URL-Parameter verwenden"
      type: boolean
    Adressgruppen: 
      description: "dieses Feld kann nicht gefiltert oder sortiert werden"
      uniqueItems: false
      type: string
    Anrede: 
      description: Optional
      maxLength: 40
      type: string
    Bemerkungen: 
      description: Optional
      maxLength: 100000
      type: string
    EMail: 
      description: Optional
      maxLength: 100
      type: string
    TelDirekt: 
      description: Optional
      maxLength: 40
      type: string
    TelZentrale: 
      description: Optional
      maxLength: 40
      type: string
    TelPrivat: 
      description: Optional
      maxLength: 40
      type: string
    Fax: 
      description: Optional
      maxLength: 40
      type: string
    Mobiltelefon: 
      description: Optional
      maxLength: 40
      type: string
    Homepage: 
      description: Optional
      maxLength: 100
      type: string
    PLZPostfach: 
      description: Optional
      maxLength: 50
      type: string
    Postfach: 
      description: Optional
      maxLength: 50
      type: string
    Region: 
      description: Optional
      type: string
    Land: 
      type: string
      description: Optional
    Longitude: 
      format: double
      description: Optional
      type: number
    Latitude: 
      format: double
      description: Optional
      type: number
    DebitorenSteuercode: 
      type: string
      description: Optional
    DebitorenSteuercodeVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenErtragskonto: 
      type: string
      description: Optional
    DebitorenErtragskontoVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenWaehrung: 
      type: string
      description: Optional
    DebitorenKostenstelle: 
      type: string
      description: Optional
    DebitorenKostenstelleVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenKostenart: 
      type: string
      description: Optional
    DebitorenKostenartVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenRabatt: 
      format: double
      description: Optional
      type: number
    Vertreter: 
      type: string
      description: Optional
    Lagerpreis: 
      format: int32
      description: Optional
      type: integer
    Geburtsdatum: 
      description: Optional
      type: string
    ErstelltAm: 
      type: string
    ErstelltVon: 
      type: string
    GeaendertAm: 
      type: string
    GeaendertVon: 
      type: string
    Zusatzfelder: 
      type: object
    additionalProperties: 
      type: object

参数:

Sort:
  in: query
  name: sort
  schema:
    type: integer
  description: Kommagetrennte Liste der Felder die aufsteigend sortiert werden sollen (ein Minus vor der Feldbezeichnung sortiert absteigend), eingebette Objekte können nur nach dem Primärschlüssel sortiert werden

Limit:
  in: query
  name: limit
  schema:
    type: integer
  description: Limitiert die Anzahl Datensätze die zurückgegeben wird

Offset:
  in: query
  name: offset
  schema:
    type: integer
  description: Legt fest bei welchem Datensatz gestartet werden soll

Filter:
  in: query
  name: filter
  schema:
    type: integer
  description: Ermöglicht innerhalb eines Felds nach Werten zu filtern (Details im Kapitel Filter Syntax)

Depth:
  in: query
  name: depth
  schema:
    type: integer
  description: Gibt an, wie viele Hierarchie-Stufen an Unterobjekten komplett eingebettet werden sollen (Details im Kapitel Einbettungstiefe)

Fields:
  in: query
  name: fields
  schema: 
    type: integer
  description: Kommagetrennte Liste der Felder welche zurückgegeben werden sollen (der Primärschlüssel wird in jedemfall zurückgegeben)

IstGeloescht:
  in: path
  name: istgeloescht
  schema:
    type: string
    enum:
      - yes
      - no
      - any
  description: Kommagetrennte Liste der Felder welche zurückgegeben werden sollen (der Primärschlüssel wird in jedemfall zurückgegeben)  

标签: swaggeropenapi

解决方案


IstGeloescht应该是路径参数/v2/ADR/Adresse/{IstGeloescht})还是查询参数/v2/ADR/Adresse?IstGeloescht=...)?它目前被定义为路径参数 - 如果是这样,您需要更新路径并添加required: true到路径参数。如果是查询参数,in: path改为in: query改为。

此外,一些 YAML 解析器将yesno作为布尔值truefalse. 我建议将这些值括在引号中,以确保它们被解析为字符串。

        enum:
          - 'yes'   # <------
          - 'no'    # <------
          - any

推荐阅读