# Web Api 設計 此筆記以 RESTful Web Api 的角度進行撰寫。 **以下內容參考[Web API 建構與設計](https://www.tenlong.com.tw/products/9789865020590)** ## RESTful Api 所遵循的設計規則 * 資源是 URL 的一部分,例如 /users * 每一個資源通常有兩個 URL,分別代表群體與個體 * 群體:GET http://{domain}/api/users * 個體:GET http://{domain}/api/users/{userid} * 使用資源名詞而非動詞 * 行為:取得使用者資料 * 建議:GET {domain}/api/users/{userid} * 不建議: GET {domain}/api/getUserInfo/{userid} * 利用 HTTP 方法表示功能行為 |HTTP 方法|URL: /users|URL: /users/{userid}| |--|--|--| |Get|取得所有使用者資料|取得指定 user id 的資料| |POST|建立一位使用者 (資料以 Request Body 傳遞)|不適用| |PUT|批次更新使用者 (資料以 Request Body 傳遞、資料必須為完整的 User 資料)|指定更新 user id 的資料| |PATCH|批次更新使用者 (資料以 Request Body 傳遞、資料為部分的 User 資料)|指定更新 user id 的資料| |DELETE|刪除所有使用者|刪除指定使用者| * 伺服器回傳標準的 HTTP 狀態碼來表示處理結果 |回應碼|執行結果| |--|--| |2xx|成功| |3xx|資源不存在、已被移除| |4xx|用戶端錯誤(缺少參數或太多請求)| |5xx|伺服器錯誤| * RESTful Api 回傳格式通常為 JSON 或 XML ## URL 資源關係 URL 的路徑要可以表達每個資源的關係 GET {domain}/users/{userid}/name 取得 某個使用者id 的名稱 GET {domain}/unit/{unitid}/name 取得 某個單位id 的名稱 ## 非 CRUD 操作 以 HTTP 行為表示與資料的互動關係,以後續的資源欄位表示要進行的行為 |HTTP 方法|對應行為| |--|--| |POST|驗證、比較等無更新資料的行為| |PUT|URL 即代表行為| |PATCH|依據 query string 或是 request body 內的資料決定行為結果| 範例 |預期行為|HTTP 方法|URL|備註| |--|--|--|--| |驗證使用者資料資料|POST|{domain}/users/verify|驗證資訊會放置於 Http Request Body| |調整使用者狀態為有效或無效 (範例1)|PATCH|{domain}/users/{userid}/status?invalid=true|使用 query string 設定狀態| |調整使用者狀態為有效或無效 (範例2)|PATCH|{domain}/users/{userid}/status|使用 HttpBody 設定狀態: Body Context = {"invalid"=true}| |設定使用者為無效使用者|PUT|{domain}/users/{userid}/status/invalid|| |設定使用者為有效使用者|PUT|{domain}/users/{userid}/status/valid||
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up