我目前正在設計一個API,並且我遇到了一個小問題: RESTful API的URL應如何看起來像應該能夠通過ID或者slu identify識別物品?通過RESTful API中的ID或子彈標識項目
我能想到的三個選項:
GET /items/<id>
GET /items/<slug>
這就要求蛞蝓和ID是可區分的,這是沒有必要在這種情況下給出的。我不認爲這個問題的乾淨的解決方案的,除非你做這樣的事情:
GET /items/id/<id>
GET /items/slug/<slug>
這會工作得很好,但是這不是我想無論是塞或物品進行識別的唯一的地方身份證,並且當人們想要爲其他行爲實施相同的方法時,它很快會變得非常難看。這只是不是很可擴展性,這使我們對這種做法:
GET /items?id=<id>
GET /items?slug=<slug>
這似乎是一個很好的解決方案,但我不知道這是否是一個可以預料到的,因此它可能導致因令人沮喪的錯誤不正確的使用。此外,它並不是那麼容易 - 或者說乾淨 - 爲此實現路由。然而,這將是易於擴展和看起來非常相似方法獲得多個項目:
GET /items?ids=<id:1>,<id:2>,<id:3>
GET /items?slugs=<slug:1>,<slug:2>,<slug:3>
但是,這也是一個缺點:如果有什麼人想找出一些他想獲取的項目與ID,但其他與slu??混合使用這些標識符並不容易。
什麼是這些問題的最佳和最廣泛接受的解決方案? 一般來說,設計這樣一個API時重要的是什麼?
問題中的問題,什麼是slu?? – 2012-04-04 20:00:49
維基百科說:「用於識別和描述資源的用戶和搜索引擎友好的短文本」或類似的東西。 – 2012-04-04 20:02:23
根據該維基百科文章和Wordpress詞彙表(http://codex.wordpress.org/Glossary#Slug)中的示例,它看起來像一個slug是已經分層的url的一部分。所以在你的情況下,可能物品是用於IDS的,但是物品//(作爲例子)是用於slu。的。 –
2012-04-04 20:17:24