Aspnet Mvc 前后端分离项目手记(三)关于restful 风格Url设计
RESTful 不是新东西,简单理解它的核心思想就是最大程度的利用http协议的一些特点,比如uri,比如请求动词,在前后端分离的项目中会有大大的好处
,好的设计的url简单明了,胜过详细的说明文档。关于介绍Restful的好文章也有很多 http://www.ruanyifeng.com/blog/2014/05/restful_api.html
看几个不错的restful风格的url设计,你就明白什么时restful风格了
1,豆瓣电影
https://movie.douban.com/subject/27179414/?from=showing
编号27179414的项目
编号27179414 电影的演员表 https://movie.douban.com/subject/27179414/celebrities
是不是很明了,一看url就知道他的内容
下面是在asp.net mvc中实践restful 的一点总结 ,项目没有使用webapi
首先,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或者不严格使用都是完全没有问题的
Aspnet Mvc 前后端分离项目手记(三)关于restful 风格Url设计的更多相关文章
- Aspnet Mvc 前后端分离项目手记(二)关于token认证
在前后端分离的项目中,首先我们要解决的问题就是身份认证 以往的时候,我们使用cookie+session,或者只用cookie来保持会话. 一,先来复习一下cookie和session 首先我们来复习 ...
- Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
前言,最近的项目使用前后端分离的模式,记录其中一些知识点.经过这个项目,也对前后端分离有了更多理解,尤其是在技术之外的方面. 越来越多的项目采用前后端分离的原因,有两点: 1,技术方面的原因 ...
- Aspnet Mvc 前后端分离项目手记(四)vue项目的搭建(一)(iview)
一项目创建 1,搭建vue-cli脚手架(依赖npm) 没有安装npm的同学,请先使用npm install -g vue-cli ,然后再进行这一步 安装的过程中有几项 ? Project name ...
- 从零开始搭建django前后端分离项目 系列三(实战之异步任务执行)
前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- Yii框架和Vue的完美结合完成前后端分离项目
背景说明 本文假设你对Yii和Vue都比较熟悉,至少都在项目里用过,另外笔者新人,以后不定时放一些干货,欢迎程序媛关注 Yii是一个PHP全端框架,典型的mvc的项目结构,后端接口都是一个控制器里放了 ...
- 基于Vue的前后端分离项目实践
一.为什么需要前后端分离 1.1什么是前后端分离 前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...
- 《Spring Boot 入门及前后端分离项目实践》系列介绍
课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发 ...
- 超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS
现在好多使用gitlab-ci的持续集成的教程,大部分都是发布到linux系统上的,但是目前还是有很大一部分企业使用的都是windows系统使用IIS在部署.NET应用程序.这里写一下如何使用gitl ...
随机推荐
- 记录一次有意思的XSS过滤绕过
我的朋友赵一天今晚给我发了一个站,跟我说他xss绕不过去,让我试试.我正好无事,就帮她看看咯. 通过赵一天发我的站点,说实话,我自己学到了很多东西,感谢大佬的教诲.今天分享出来: 站点:xxx.com ...
- expansion pattern ‘Frame&’ contains no argument packs
camera/CameraImpl.h::: error: expansion pattern ‘Frame&’ contains no argument packs void read_fr ...
- BIOS翻译
BIOS翻译 BIOS(Basic Input/Output System—基本输入输出系统).BIOS可以视为是一个永久地记录在ROM中的一个软件 Main主要信息 :main 主要信息 advan ...
- ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE(记忆化搜索)
https://nanti.jisuanke.com/t/31454 题意 两个人玩游戏,最初数字为m,有n轮,每轮三个操作给出a b c,a>0表示可以让当前数字加上a,b>0表示可以让 ...
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...
- PYTHON使用入门
一 写在开头1.1 本文内容PYTHON语言的基础知识. 二 Q & A2.1 为什么选择PYTHON?软件质量:在很大程度上,PYTHON更注重可读性.一致性和软件质量,从而与脚本语言世界中 ...
- HTML(三)HTML属性
HTML 属性 属性: [class] 规定元素的一个或多个类 注意: 类不能以数字开头 class = "classA classB" // 多个类的写法 [id] 规定元素的唯 ...
- 2017-2018-2 PDE 讨论班
等等. 第一次上课居然忘记怎么让笔记本电脑和投影仪相连了. 有两个接口. 一个在外面, 没用. 一个盖着了, 忘记翻开了.
- Coursera, Big Data 2, Modeling and Management Systems (week 4/5/6)
week4 streaming data format 下面讲 data lakes schema-on-read: 从数据源读取raw data 直接放到 data lake 里,然后再读到mode ...
- localhost和127.0.0.1的区别
localhost(local)是不经网卡传输,它不受网络防火墙和网卡相关的的限制. 127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制. ::1 是IPv6中的12 ...