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 ...
随机推荐
- linux服务器间文件夹拷贝
要求,在A机器执行脚本,把A机器的某个目录文件拷贝到B机器. 第一版ftp实现: 1.A 机器先安装 ftp 客户端 $ sudo yum install ftp 2.B机器安装ftp服务端 $ su ...
- response 输出中文数据 文件下载
使用OutputStream或者PrintWriter向客户端浏览器输出中文数据 package com.xc.response; import java.io.IOException; import ...
- xadmin+django2.0删除用户报错,get_deleted_objects() takes 3 positional arguments but 5 were given
解决方法:将xadmin/plugins/actions.py中的 if django_version > (2, 0): #deletable_objects, model_count, pe ...
- <一>企业级开源仓库nexus实战应用–nexus的安装
1,Nexus 介绍. Nexus是什么? Nexus 是一个强大的maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问. 不仅如此,他还可以用来创建yum.pypi.npm.doc ...
- Hbase CMS GC 调优。
export HBASE_OPTS="-XX:+UseConcMarkSweepGC" export HBASE_LOG_DIR=/app/hbase/logexport HBAS ...
- IE提示“Internet Explorer已限制此网页运行脚本或ActiveX控件”的解决办法
在页面html开始标签和head开始标签中间新增一行,添加以下代码: <!-- saved from url=(0014)about:internet --> 或者 直接设置IE浏览器 工 ...
- Flink学习(三)状态机制于容错机制,State与CheckPoint
摘自Apache官网 一.State的基本概念 什么叫State?搜了一把叫做状态机制.可以用作以下用途.为了保证 at least once, exactly once,Flink引入了State和 ...
- 基于vue cli 3.0创建前端项目并安装cube-ui
前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...
- phpstudy 2016 切换Nginx+php7.0版本所需运行库 vc14 + 安装redis拓展
去微软官方下载vc14的运行库 链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145 32位运行库 安装成功 切换版本成功 ...
- 两个c语言结构体复制的问题
以前一直以为结构体要通过memcpy来复制,现在才明白可直接用“=”复制 C语言中,结构体是一篇连续的内存空间,使用=赋值操作,底层用到的就是memcpy:如果结构体中有指针变量:操作后.两个指针指向 ...