【问题标题】:Could anyone Identify the error for me in this YAML file? [duplicate]任何人都可以在这个 YAML 文件中为我识别错误吗? [复制]
【发布时间】:2018-09-12 11:15:44
【问题描述】:

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

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

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

如果我有 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)  

【问题讨论】:

  • 回顾链接的问答 - 您的路径参数 IstGeloescht 缺少 required: true
  • 这不是必需的,但现在我更改了查询路径,错误显示(午餐后)可能是来自 swagger hub 的编辑器错误?啊,写在这里,我读多了。 swagger.io/docs/specification/describing-parameters 必需和可选参数

标签: swagger openapi


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢你,我已经想知道了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 2014-05-11
  • 2022-11-23
相关资源
最近更新 更多