当前位置: 首页 > 知识库问答 >
问题:

如何在 swagger API 路由文档中指定模型属性的子集

秦英发
2023-03-14

正在使用swagger为我的服务编写API规范。我使用模型定义(“#/definitions/prototype”)作为POST/prototypes补丁/prototype/:idroutes的主体参数。

如何指定 PATCH 路由仅接受 POST 路由在请求正文中执行的属性子集?例如,我希望 PATCH /instances/:id 路由仅允许修改 mobileDeviceId 原型属性。

swagger: "2.0"
info:
  title: ""
  description: ""
  version: "1.0.0"
host: foo.example.com
schemes:
  - https
basePath: /v1
produces:
  - application/json
consumes:
  - application/json
paths:
  /prototypes:
    post:
      summary: Create new prototype
      parameters:
        - name: prototype
          in: body
          description: Prototype object
          required: true
          schema:
            $ref: "#/definitions/Prototype"
      responses:
        201:
          description: Success
          schema:
            $ref: "#/definitions/SuccessCreated"
        403:
          description: Prototype limit exceeded error
          schema:
            $ref: "#/definitions/Error"
        default:
          description: Unexpected error
          schema:
            $ref: "#/definitions/Error"
  /prototypes/{id}:
    patch:
      summary: Update an existing prototype's properties
      parameters:
        - name: id
          in: path
          type: number
          description: ID property of a prototype
          required: true
        - name: prototype
          in: body
          description: Prototype object
          required: true
          schema:
            $ref: "#/definitions/Prototype"
      responses:
        200:
          description: Success
definitions:
  Prototype:
    type: object
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
      mobileDeviceId:
        type: number
  SuccessCreated:
    type: object
    description: Returned as response to successful resource create request
    properties:
      code:
        type: number
        default: 201
      message:
        type: string
  Error:
    type: object
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
      fields:
        type: string

共有1个答案

空慈
2023-03-14

Swagger使用json-schema:http://json-schema.org$refs为您提供了一种在新路径上重复现有json架构的方法。请注意,您正在对修补程序/参数/-name:prototype/schema 使用$ref。您可以在定义部分中为补丁创建新定义,并改为引用它

swagger: "2.0"
info:
  title: ""
  description: ""
  version: "1.0.0"
host: foo.example.com
schemes:
  - https
basePath: /v1
produces:
  - application/json
consumes:
  - application/json
paths:
  /prototypes:
    post:
      summary: Create new prototype
      parameters:
        - name: prototype
          in: body
          description: Prototype object
          required: true
          schema:
            $ref: "#/definitions/Prototype"
      responses:
        201:
          description: Success
          schema:
            $ref: "#/definitions/SuccessCreated"
        403:
          description: Prototype limit exceeded error
          schema:
            $ref: "#/definitions/Error"
        default:
          description: Unexpected error
          schema:
            $ref: "#/definitions/Error"
  /prototypes/{id}:
    patch:
      summary: Update an existing prototype's properties
      parameters:
        - name: id
          in: path
          type: number
          description: ID property of a prototype
          required: true
        - name: prototype
          in: body
          description: Prototype object
          required: true
          schema:
            $ref: "#/definitions/PatchPrototype"
      responses:
        200:
          description: Success
definitions:
  Prototype:
    type: object
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
      mobileDeviceId:
        type: number
  PatchPrototype:
    type: object
    properties:
      mobileDeviceId:
        type: number
  SuccessCreated:
    type: object
    description: Returned as response to successful resource create request
    properties:
      code:
        type: number
        default: 201
      message:
        type: string
  Error:
    type: object
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
      fields:
        type: string
 类似资料:
  • 英文原文: http://emberjs.com/guides/routing/specifying-a-routes-model/ 指定路由的模型 应用中的模板背后是由模型来支撑的。那么模板是如何知道需要显示哪些模型的呢? 例如,如果有一个photos模板,那么它是如何知道应该渲染哪一个模型的呢? 这正是Ember.Route的工作之一。通过定义一个与模板同名的,并实现其model方法的路由,是

  • 问题内容: 在我的应用程序上下文中,我定义了属性文件: 我想获取JSP页面上该文件中定义的属性的值。有没有办法做到这一点 问题答案: 只能解析Spring配置中的占位符(XML或注释)。在Spring应用程序中使用bean 是非常普遍的。您可以通过这种方式从视图中访问它(假设您正在使用): 然后,在您的JSP中,您可以使用或。

  • 我有一个ASP。NET核心Web APIendpoint,它接受(FromBody)下面定义的搜索对象 因此...如果我将以下JSON发布到我的endpoint {“pageSize”:10,“query”:{“fieldId”:“body”,“value”:“cake”,“operator”:“matches”} 我成功地获取了一个搜索对象,但查询属性的类型是Expression,而不是Matc

  • 例如:产品详细信息页面可能有一个标签式导航部分,默认显示产品概述。 当用户单击“技术规格”选项卡时,该部分将显示规格。 如果用户点击ID为3的产品,我们要显示产品详细信息页面,其中包含概述: 当用户点击 “Technical Specs”: localhost:3000/product-details/3/specs overview 和 specs 作为 product-details/:id的

  • 我想指定属性文件的位置,OSGi蓝图属性占位符应从中读取属性值: 更新:Configuration felix.configadmin felix.fileinstall适用于我。 我安装了: org.apache.felix.configadmin-1.8.0.jar org . Apache . Felix . file install-3 . 1 . 4 . jar org.eclipse.

  • 我有一个结构如下的文档,有两种类型的子文档。第二个子文档指的是一些第一个子文档,但不是全部 这里的“答案文本”需要链接到多个问题,因为一个答案可以对多个问题有效。 在答案模式中,我应该如何存储问题。我不想再次存储问题对象数据,因为它将是重复的数据,并且如果一些问题被修改,那么它需要在问题中被修改回答子文档。所以基本上我想存储问题的_id回答。 猫鼬中回答模式的语法是什么?目前我有空数组,但不确定这