【发布时间】:2016-07-08 15:12:09
【问题描述】:
我的 REST API 中有 2 个 PUT 方法具有相同的入口点。
方法 #1:使用 multipart/form-data 类型的 PUT /videos/{videoId} 替换视频。
方法 #2:PUT /videos/{videoId}?title=newTitle&description=newDescription 将更新视频的标题和说明。
当我尝试像下面这样记录它时,我得到“方法已经声明:'put'”
put:
description: replace a video with a new video
body:
multipart/form-data:
formParameters:
file:
description: a video file to replace the current video file
required: true
type: file
responses:
200:
body:
application/json:
schema: !include video.schema
example: !include video.example
description: Returns the video object.
put:
description: update video's fields
queryParameters:
title:
description: video's title
required: false
type: string
description:
description: video's description
required: false
type: string
responses:
200:
body:
application/json:
schema: !include video.schema
example: !include video.example
您对如何记录这个案例有什么建议吗?
谢谢!
【问题讨论】:
-
正如@farolfo 下面所说,存在设计问题。如果有的话,上述方法违反了一致性原则:为什么视频实体的某些部分会使用查询参数进行更新,而其他部分会使用 multipart/form-data 实体进行更新。只需在所有情况下使用 multipart/form-data:这将使您的 API 用户更轻松。