我正在使用.NET 5.0作業。我有一個基于REST的API,目前已經部署在生產中,并且商家已經與它集成。現在有一個要求,我需要在請求和回應中增加一些引數。
在現有的REST API中添加引數的做法是否不好?我是否應該引入一個新的版本,或者在同一版本中添加req/response引數也是可以的?
編輯:額外的引數不是強制性的
uj5u.com熱心網友回復:API可以在兩個地方被打破:請求(輸入)和回應(輸出)。
請求。
如果你引入了新的輸入引數,并且你想在你的應用程式中保持向后兼容,那么:
- 你的服務器端應該對缺失的輸入引數有合理的默認值 。
- 你的服務器端應用程式應該對有這些缺失值的輸入保持相同的行為(回傳相同的輸出,見下文)。換句話說,默認值("回退")足以回傳相同的結果。
你的服務器端應該在你的應用程式中引入新的輸入引數。
如果你不遵守上述規定,那么你的 API 在輸入方面就有問題。
回應
回應是很棘手的,因為它取決于你的消費者,以及回應的內容型別。如果回應的內容型別是可擴展的,例如 JSON 或 YAML,并且您的 API 消費者知道新欄位可以隨時添加到輸出中,并且可以被忽略,那么您的 API 在輸出方面是向后兼容的(也就是說,沒有損壞)。
然而,如果您的消費者希望在回應中獲得嚴格的模式(例如,固定數量的現有欄位),那么添加新欄位(即使它們可以被忽略)是不可接受的,從而破壞您的 API。
這取決于...
。因此,答案是:這取決于。如果在輸出中添加了新的欄位,那么您應該與您的消費者溝通擴展回應,或者為您的 API 創建一個新的端點( 此外,如果輸入引數沒有合理的回退值,那么這同樣需要您的 API 的
標籤: 上一篇:谷歌云存盤報告下載無權限
/v2/.../code>)。
v2 入口點。
