gpt4 book ai didi

api - 理解 RESTful。复杂操作的 URI

转载 作者:行者123 更新时间:2023-12-04 06:02:28 25 4
gpt4 key购买 nike

我正在尝试构建 RESTful 服务,但遇到了一些问题。我将通过一个虚构的 RESTful 服务示例来描述这些问题(问题)。

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

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

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 完全相同?
例如:
/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 实现这一点?应该如何传输过滤器对象(xml 或 json)?如何使用过滤器的结果制作页面的 URL? /news/{date:12.12.2012,author:'admin'}或者更好的东西?

对不起,我的英语粗糙,如果您看到一些语法等错误 - 请随时纠正它们。

提前致谢。

最佳答案

我会说你应该对类型、页面和 per_page 使用常规参数。 Type、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

    关于api - 理解 RESTful。复杂操作的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773087/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com