我為管理食物型別配置了以下端點
- 發布?/食物/型別
- 獲取~/食物/型別
- 獲取~/food/types/{id}
- 放~/food/types/{id}
- 洗掉 ~ /food/types/{id}
我試圖在我的 REST API 中表示一個克隆操作,并希望避免在我的端點中使用動詞。
經過一些研究,我想出了以下內容,因為它符合我能想到的其他解決方案中最符合基本 REST 原則的內容:
POST ~ /food/types?sourceId={id}
這意味著該端點的方法(在典型的 MVC 框架中)需要有條件地處理發送 JSON 有效負載時的創建以及提供查詢引數時的資源復制。
我試圖思考如何在我的 OpenAPI 規范檔案(v3.0.2)中表達這一點
這是我到目前為止所得到的:
/api/food/types:
post:
summary: Create a new type of food
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: ./response/food-type.yaml
'400':
description: Bad Request
requestBody:
content:
application/json:
schema:
$ref: ./request/food-type.yaml
description: Create a new type of food
tags:
- Food Type
parameters: []
request/food-type.yaml 包含一個帶有兩個必需引數的物件:
- 姓名,
- 類別
當我的框架根據 OpenAPI 規范驗證請求時,我希望它有時忽略請求正文,當且僅當請求引數提供了“sourceId”引數時。
這種型別的東西甚至可以在 OpenAPI 3 中表達,還是我用錯了方法?
簡而言之,當使用 OpenAPI 3 在發布請求中提供特定查詢引數時,是否可以忽略請求正文。
在這個問題之后,我的 REST 方法是否缺乏,是否有更好的方法可以表示我的 API 中資源的克隆?
uj5u.com熱心網友回復:
請改用訊息正文來描述來源:
POST /food/types {"clone": "{id}"}
如果將它們轉換為名詞,您甚至可以使用動詞:
POST /food/type-cloning {"source": "{id}"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527385.html
標籤:api休息开放API
