前幾天收到一個需求,之前我們提供的 API 對方現在說在 .NET 中不方便直接在 GET 方法中使用 Body 夾帶參數,希望可以調整成其他方式。
在 RFC 2616 (已過期)的規範中並沒有規定 Http Get 方法不能有 Body,在 RFC 7230 規範中也是。
主管的意思是我們開的 API 是這樣,之前也有詢問有沒有需要調整的部分,所以現在應該不太需要特別調整。
這件事情讓我想到在軟體開發中有個原則叫做 Robustness principle ,簡要的說明是在你所做的事情要保守,從他人接收的事情要自由。也可以說是發送的內容要保守,接受的內容要自由。
或許在對方的情境中在 Get 方法不太容易附加 Body 資料,也或許已經過了最佳調整時機,不過在 API 的共識中似乎 Get 就是鮮少有使用 Body,最後的解決方式就是放在 Header 中,這樣在未來有更多需要存取 API 的系統中也比較不會遇到問題,方便系統串接。
參考資料:
Wiki - Robustness principle
在 RFC 2616 (已過期)的規範中並沒有規定 Http Get 方法不能有 Body,在 RFC 7230 規範中也是。
主管的意思是我們開的 API 是這樣,之前也有詢問有沒有需要調整的部分,所以現在應該不太需要特別調整。
這件事情讓我想到在軟體開發中有個原則叫做 Robustness principle ,簡要的說明是在你所做的事情要保守,從他人接收的事情要自由。也可以說是發送的內容要保守,接受的內容要自由。
或許在對方的情境中在 Get 方法不太容易附加 Body 資料,也或許已經過了最佳調整時機,不過在 API 的共識中似乎 Get 就是鮮少有使用 Body,最後的解決方式就是放在 Header 中,這樣在未來有更多需要存取 API 的系統中也比較不會遇到問題,方便系統串接。
參考資料:
Wiki - Robustness principle
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com