[英]RESTful URL design
我們有一個功能來檢查地址是否有效。
起初網址就像
/地址/驗證/ {城市} / {狀態} / {郵政編碼}
但后來我認為地址的所有參數只是一個資源。 所以我改成了
/address/validate/{city}.{state}.{zipCode}
我不確定哪一個更好,你有什么建議?
在這種情況下,我會去/address/validate?city={city}&state={state}&zipcode={zipCode}
為什么? 嗯,這只是我的意見。 但是將路徑(uris)視為表示的唯一標識符。 這通常是您的模型域的一部分。 由於您沒有(可能)存儲驗證結果,因此只需創建驗證資源。
把它想象成一種方法。 參數是query-params。
因此,執行此操作時,params會修改validate(無論是否有效)的表示。
在休息時將其視為表示,在您的示例中,我猜/address/
作為資源存在,並且它在您的數據模型上有表示。 所以你可以POST
, PUT
和GET
來創建,修改和檢索。
但是如果你想要一個/address/validate
這可能是驗證的結果。 所以我會選擇我的榜樣。
第一。 Becourse它是有效的android parseable uri
我認為后者是更好的選擇。 如果用戶以后要驗證任何參數,並且如果添加支持,那么放棄一個參數而不是擔心子路徑應該處於的順序似乎更合乎邏輯。它最終取決於設計您的應用程序也是如此,因為API設計對某些域比其他域更有意義。 我也會在參數之間添加。
我不認為它們都不是有效的restful URL。
您的描述可以被認為是“我們需要創建地址資源並對其進行驗證”。 為什么不只是POST到/address
將創建一個地址資源與給定的城市,州和zipCode作為通過POST傳遞的數據。 現在,在該邏輯中,您將驗證是否可以創建資源。 如果可以,那么您將創建它並返回該資源的唯一引用,該引用將在后續請求/address/:id/...
。 否則,如果發生驗證錯誤,您將返回HTTP錯誤代碼400 Bad Request
。
在我看來,這可能更“寧靜”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.