拿Blog Web Services为例,一个REST风格的URI设计,可行乎?

/blog
get,列表,分页表示/blog?pi={pageindex}

博客分类
/blog/category
get,所有blog分类
post,创建新的分类

/blog/category/{id}
get,blog分类明细
put,修改分类
delete,删除分类

/blog/category/{id},get,blog分类明细,
这个表达是有问题的,某一类别的blog列表?

博客归档
/blog/date
get,?

/blog/date/{year}
get,某年的blog列表
/blog/date/{year}/{month}
get,某月的blog列表
/blog/date/{year}/{month}/{day}
get,某日的blog列表

博客明细
单个blog信息的Read,Update,Delete
Case1:/blog/
post,创建新的blog,而实际上/blog/是列表展示,把创建新blog和blog列表混在一起了。
/blog/{id}
get,读取
put,修改
delete,删除
【NO.1】假设/blog/{id}的id是string类型,那么恰好出现id=category|date的情况呢?

因此,需要加入资源的二级分类标示:
Case2:/blog/details/
post,创建新的blog
/blog/details/{id}
get,读取
put,修改
delete,删除

博客搜索
/blog/search?key={key}
get,搜索

有几个问题需要注意:
1.当设计的url规则需要区分顺序优先级时,是不是就可以认定是一个比较糟糕的设计?
【NO.1】
2.用户截取最后一个url片段,Web仍然能够访问
例如,当用户输入:/blog/details时,如何处理?
给出错误提示?
3.针对类似资源的批量处理
针对类似资源的批量处理,例如,
批量修改,把category=1的blog都改成category=2

批量删除,把category=1的blog删除

最新版本:http://www.gaotianpu.com/blog/detail/265

转载于:https://www.cnblogs.com/gaotianpu/archive/2010/05/18/REST_URL_Design_Blog_Web_Services.html

一个REST风格的URI设计方案[Blog Web Services]相关推荐

  1. 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究

    本文的目的在于提供一种可行的解决方案通过Web Service技术来整合和管理现有的Asp程序到Asp.Net. 此应用解决方案尽可能从实际出发以迭代更新方式的策略把Asp Web服务器内存中的当前S ...

  2. 新版:Web Services面试题库和答案

    新版:Web Services面试题库和答案 1.Web Service是什么? Web Service是一种标准软件系统,用于通过网络在两个设备(客户端和服务器)之间进行通信. Web Servic ...

  3. Java与.NET 的Web Services相互调用

    一:简介 本文介绍了Java与.NET开发的Web Services相互调用的技术.本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用 ...

  4. Web Services:惊世未了缘

    URL= http://www.csdn.net/news/newstopic/5/5665.shtml Web Services:惊世未了缘 (2002.05.14)   来自:每周电脑报     ...

  5. Golang Web入门(2):如何实现一个RESTful风格的路由

    Golang Web入门(2):如何实现一个RESTful风格的路由 摘要 在上一篇文章中,我们聊了聊在Golang中怎么实现一个Http服务器.但是在最后我们可以发现,固然DefaultServeM ...

  6. Spring MVC开发RESTful风格的URI

    一.写在前面 RESTful结构可参考博文:https://blog.csdn.net/codejas/article/details/79799386 我们知道在HTTP 协议中,有四种操作方式的动 ...

  7. 使用 C++ 创建你的第一个 Metro 风格应用

    WindowsMetro 风格应用专门针对 Windows 8 Consumer Preview 所提供的用户体验量身定制.每个出色的 Metro 风格应用都遵循特定的设计准则,这使得此类应用与传统的 ...

  8. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo: NinetyH GitHub: https://github.com/aiyanbo/ ...

  9. 定义一个DSL风格的LifecycleObserver(Kotlin)

    package com.xyj.checkupgrade.extendimport androidx.lifecycle.Lifecycle import androidx.lifecycle.Lif ...

最新文章

  1. RanceQuest2_从委托到Lambda_会用(递归数学函数)
  2. 这样就能用MathType编辑^符号
  3. php脚本函数,PHP执行系统命令函数实例讲解
  4. 如何从类型创建新的对象实例
  5. 一个数字可以在不损失精度的情况下达到的JavaScript的最高整数值是多少?
  6. 【以太坊】私有链和测试网的区别
  7. android倒计时功能,Android 实现列表倒计时功能
  8. html 数据库 编写学生表,用sql语句创建学生表如何做
  9. 这个浮躁的年代,时刻提醒自己
  10. oracle插补缺失日期,Oracle连接 ORA-28001: 口令已经失效解决方法
  11. SDWebImage获取到UIImage分辨率跟原图不一样
  12. MySQL做毕设_PHP+MYSQL在线小说阅读网的设计与实现
  13. IT已成为最疯狂的加班行业,没有之一
  14. Tapestry中listener监听方法传递参数的方式
  15. 计算机本地硬盘满了,本地磁盘C盘满了怎么清理?
  16. SQP验厂要怎么做?
  17. 离散数学——可数集和不可数集
  18. linux命令 - tail:查看文件最后几行的命令
  19. 趣闻-如何下载知乎视频
  20. 高中的班花貌美如花,我与一众兄弟将其“共享”了!

热门文章

  1. 关于四则运算的设计思想
  2. Internal Error 2738 - Installing ArcGIS Server 9.3,10 for Java
  3. postfix + cyrus-sasl2 + courier-authlib + Courier-IMAP + postfixadmin
  4. Linux中安装.rpm、.tar和.tar.gz或.tgz包
  5. Redis 常用配置参数
  6. DevOps vs Agile:有什么区别?
  7. 如何在Linux中找到您的IP地址
  8. 适合初学者的安卓开源项目_开源初学者的6个起点
  9. three.js 渲染器更改背景色的几种方法
  10. 学习 | egg.js 中间件和插件