簡體   English   中英

RESTful Web服務的良好端點

[英]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將刪除這些資源。

換一種說法:

獲取http://myapp.com/books/35

將會得到ID為35的書,但是

開機自檢http://myapp.com/books/

會使用您提供的代表正文數據的任何正文將新書插入后端存儲。

希望有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM