[英]Good endpoints for a RESTful webservice
我正在構建一個簡單的RESTful服務,並試圖提出良好的設計和直觀的端點。 這些是我在閱讀關於REST的大量文章后想出的一些想法,並希望獲得一些反饋。
該服務將公開的資源是書籍-
http://myapp.com/books/?type=fiction&age=15-35&author=american
http://myapp.com/books/35/chapters/2
http://myapp.com/books/35/chapters/2/pages/6
http://myapp.com/books/35/chapters/2/pictures/1
每個端點的響應表示將取決於方法和Accept標頭,即
GET -H'接受:應用/ JSON“ http://myapp.com/books/35/chapters/2 ”應該導致類似
{
"book": "The Adventures Of Huckleberry Finn",
"title": "The Boys Escape Jim",
"pages": 15,
"pictures": 3
}
並且帶有“接受:應用程序/ xml”的相同請求將返回相同的xml表示形式。
我不清楚的幾件事:
由於REST規定我們應該使用名詞,而不是動詞,因此我如何顯示html表單以輸入新資源?
/ new或/ add根本不是RESTful的。
將
GET 'Accept: text/html' 'http://myapp.com/books/new'
是成為表單頁面端點的可接受方法嗎? 也許
POST 'Accept: text/html' 'http://myapp.com/books/'
空着的身體是更好的方法嗎? 和相同的職位空着身體,
'Accept: application/json'
最終會出現http 400錯誤。 這是正確/合理的方法,還是有更好的方法呢?
我將其作為一種“公開書籍,章節,圖像”資源的服務來實現,而“網頁”只是這些資源的一種表示形式。 因此,從技術上講,如果我將“ Accept:text / html”添加到任何上述請求中,那么我應該期望獲得所請求資源的html表示形式。 同時,html實際上不是一種描述語言的數據,而是一種表示語言,在關注點分離之后,建議將模型(資源)和控制器(處理請求的代碼)與視圖(html)分開。
通常,是否應該將公開資源的“ api”與UI分開處理?
如果是小型單頁應用程序怎么辦?
謝謝您提前提供的所有幫助!
您在這里問了很多問題。 我只加2美分。 您在文章開頭顯示的Restful API看起來不錯。 您所說的那些“名詞”是資源的名稱,例如書籍,章節,頁面等。REST的思想圍繞使用HTTP動詞與這些資源進行交互。 GET請求將獲取這些資源。 PUT / POST將插入或更新這些資源,而DELETE將刪除這些資源。
換一種說法:
將會得到ID為35的書,但是
會使用您提供的代表正文數據的任何正文將新書插入后端存儲。
希望有幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.