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

如何表示无关的Swagger参数

冯宪
2023-03-14

我们的业务希望创建一个大摇大摆的文档来表示内部服务器。

由于各种原因,每个请求都需要包括一系列无关的头参数:

parameters:
    - name: device_id
      in: header
      required: false
      type: string
    - name: ip_address
      in: header
      required: true
      type: string
    - name: client_id
      in: header
      required: true
      type: string
    - name: request_id
      in: header
      required: true
      type: string

如果不包括参数,但参数本身与正在发出的请求无关,服务器将拒绝该请求。

Swagger文档的主要目的是生成少量客户机应用程序(我们控制所有这些应用程序)来与服务器交互。

我们可以在每个请求上显式地添加每个参数,但这将导致文档中的重复和客户端中的额外处理。或者,我们可以将这些参数视为元数据,并将它们从文档中排除,依赖于客户机将它们适当地添加到每个请求中。

对于这些参数是否有推荐的方法?

共有1个答案

岳京
2023-03-14

OpenAPI定义充当API提供者和客户机之间的契约。除其他外,它可用于生成客户端SDK。因此,希望OpenAPI定义能够准确地描述API,包括请求正文格式、所需参数、身份验证等。

所有必需的参数都应该显式定义。

为了减少代码重复,您可以在全局parameters部分(对于OpenAPI 2.0)或components/parameters部分(对于OpenAPI 3.0)中定义可重用参数,然后在各个路径或操作中定义$ref参数,如下所示:
swagger/openapi-use$ref传递可重用定义的参数

请注意,目前没有办法$ref一组参数。在这里跟踪相应的特性html" target="_blank">请求:
为更好的可维护性对多个参数定义进行分组
全局/公共参数(由于某种原因关闭了这个参数,尽管它没有实现)

 类似资料:
  • 我正在使用和来记录WebApi2项目。我有一个使用XML正文并返回文本响应的操作。我希望留档包含XML输入的示例-例如

  • 我想在我的Swagger-ui界面上修改数据类型下的示例值。目前它包含以下默认值(由Swagger生成): 我想指定实数值,而不是“空”值。PS:我用带注释的spring boot:@ API operation,...

  • 在一个基于NodeJS的项目中,loopback-component-explorer(2.7.0)附带的Swagger没有显示HTML页面中的“参数”,我们可以在其中为Restendpoint提供所需的params,而不管http动词(例如GET、POST和PATCH等)。必须remoteMethod(...)定义遵循一些大摇大摆的要求吗? 谢了。

  • 我正在为一个新endpoint创建一个招摇规范,该endpoint将接收一个作为二进制数据的文件。你会如何在夸张的规范中表达这一点?我将对象视为数据类型,但这似乎不是我要寻找的。过去有人这样做过吗? 据我所知,这个问题不是重复的,因为它专门涉及二进制或“blob”对象类型。

  • 我正在用ASP。Net核心2.1 Web API项目。下面是一个示例控制器操作方法: 这是我在 Swagger 文档中得到的内容。如您所见,Swagger 显示属性,但不显示属性: 如果我在一个DTO类上使用< code>Required和< code>MaxLength属性,这是一个POST操作方法的参数,那么Swagger会显示这两个属性: 如何让Swagger显示查询参数的(和其他)验证属性

  • 问题内容: 当“解构”一个元组时,我可以用来表示我不感兴趣的元组元素,例如 使用Python 2.x,如何使用函数参数表达相同的含义?我尝试使用下划线: 我还试图完全忽略该论点: 还有另一种方法可以达到相同目的吗? 问题答案: 这是我对未使用的参数的处理: