首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解RESTful。用于复杂操作的URI

了解RESTful。用于复杂操作的URI
EN

Stack Overflow用户
提问于 2012-01-08 05:01:10
回答 2查看 712关注 0票数 2

我正在尝试构建一个RESTful服务,并且遇到了一些问题。我将用一个假想的RESTful服务的例子来描述这些问题。

例如,我需要在我的网站上使用“新闻”服务。新闻可以有不同的类型:本地新闻和全球新闻。新闻由管理员添加。用户可以同时查看本地和全球新闻(单独或全部)。新闻是按页显示的。用户可以查看准确的新闻。

因此,我为这个任务构建了这样一个动词-名词表:

代码语言:javascript
复制
GET  /news               - Get all news
POST /news               - Create news
GET  /news/{id}          - Show the news with id={id}
PUT  /news/{id}          - Edit the news with id={id}
GET  /news/{type}/{page}/{per_page} - Get news page #{page} of type {type}
GET  /news/{page}        - Get news page #{page} of both types

因此,存在以下问题:

1)如何区分{page}和{id}?也许{id}只能是数字,但{page} -以'p‘开头的字符串(例如'p1'}?

2)用户可以更改"per_page“的值--一个页面上显示多少条新闻。是不是太复杂了-- /news/{type}/{page}/{per_page}?如何将其简化?

3)浏览器中的URL在此服务上应该是什么样子?URL不会和上表中的URI一样精确?例如:

代码语言:javascript
复制
/news - Viewing news (1st page with default 'per_page' and default 'type')
/news/{type} - Viewing news (1st page with default 'per_page' and type={type})
/news/{id} - Viewing exact news with id={id}
/news/{type}/{page}/{per_page} - Viewing exact page of news of exact type.

4)附加功能。例如,过滤搜索(按日期、作者或标题获取新闻)。如何使用REST实现这一点?应该如何传输filter对象(xml或json)?如何使网页的网址与过滤结果?/news/{date:12.12.2012,author:'admin'}或更好的东西?

很抱歉我的英语很粗糙,如果你看到一些语法和其他错误-请随时改正它们。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-08 18:57:04

我会说你应该对类型、页面和per_page使用常规的参数。类型、页面和Per_Page并不代表唯一的资源,而是新闻资源集合的过滤器。所以我会这么做

  • /news
  • /news/{id}
  • /news?type={type}&page={page}&per_page={per_page}

附加过滤也是如此。

请务必查看http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_2

票数 2
EN

Stack Overflow用户

发布于 2012-01-08 19:41:39

正如Gordon所写的,你可以像往常一样使用请求参数。请记住,REST并不意味着只有干净和漂亮的urls。

因此,将in和类型参数保留在uri中,而将分页参数与查询字符串一起添加。

也叫,为了区分不同的uri部分,你可以使用谷歌的gdata中使用的模式,即在参数前面加上名称

代码语言:javascript
复制
/news
/news/id/{id}
/news/type/{type}

通过在服务器端进行一些解析,您可以添加许多参数,可选参数,而不强制执行确切的排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8773087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档