RESTful 不是新东西,简单理解它的核心思想就是最大程度的利用http协议的一些特色,好比uri,好比请求动词,在先后端分离的项目中会有大大的好处html
,好的设计的url简单明了,赛过详细的说明文档。关于介绍Restful的好文章也有不少 http://www.ruanyifeng.com/blog/2014/05/restful_api.htmlweb
看几个不错的restful风格的url设计,你就明白什么时restful风格了后端
1,豆瓣电影api
https://movie.douban.com/subject/27179414/?from=showingrestful
编号27179414的项目mvc
编号27179414 电影的演员表 https://movie.douban.com/subject/27179414/celebritiesasp.net
是否是很明了,一看url就知道他的内容前后端分离
下面是在asp.net mvc中实践restful 的一点总结 ,项目没有使用webapi post
首先,IIS默认是禁止Delete,Put等请求的,若是没有事先配置的话会报404网站
解决办法一:在web.config中标注module节点 <modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true">
方法二:若是上述方法仍是不奏效的话
能够直接在控制面板》》程序或功能》》启用或关闭Windows功能中关闭除WebDev模块
在这里,取消【WebDAV发布】的勾选就行,
启用是路由特性, 使用restful时有时候会自定义一些路由映射, 在RouteConfig中加入 routes.MapMvcAttributeRoutes();
关于路由特性也有一些很详细的文章 https://www.cnblogs.com/zeusro/p/RouteConfig.html
在URL中添加版本号
1 url中要有版本号 好比 https://api.demo.com/v1/controller/action , 也就是说要设置全局的路由
方法一, 添加区域,
,
方法二, 在IIS添加应用程序
在IIS里面添加网站的时候,不直接添加,二十添加一个空文件夹,而后再在里面添加应用程序
方法三,定义全局路由
定义全局路由, 这篇文章有介绍 https://www.cnblogs.com/savorboard/p/dontnet-IApplicationModelConvention.html
使用http动词来代表来意
分别使用来对应增删改查, url使用小写 ,尽可能使用名字而不是动宾短语 好比 获取商品的url /products 要好于 /product/getproduct
post (新增)
put (修改)
delete(删除)
get(查询)
添加一个商品 /product post动词
编辑商品 /product put动词
删除商品 /product delete动词
获取商品列表 /products?page=1&pagesize=50 get动词
获取 ID为1的商品ID为3图片 /product/1/img/3 get动词
设置Id为1的商品价格为2 /product/1/setprice/2 post动词
restful缺点不少,在实际使用过程当中其实很难作到彻底遵循,这个时候千万不能生搬硬套,他并非一个硬性的规定,只是一种风格,不用restful或者不严格使用都是彻底没有问题的