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设计的更多相关文章

  1. Aspnet Mvc 前后端分离项目手记(二)关于token认证

    在前后端分离的项目中,首先我们要解决的问题就是身份认证 以往的时候,我们使用cookie+session,或者只用cookie来保持会话. 一,先来复习一下cookie和session 首先我们来复习 ...

  2. Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)

    前言,最近的项目使用前后端分离的模式,记录其中一些知识点.经过这个项目,也对前后端分离有了更多理解,尤其是在技术之外的方面. 越来越多的项目采用前后端分离的原因,有两点:      1,技术方面的原因 ...

  3. Aspnet Mvc 前后端分离项目手记(四)vue项目的搭建(一)(iview)

    一项目创建 1,搭建vue-cli脚手架(依赖npm) 没有安装npm的同学,请先使用npm install -g vue-cli ,然后再进行这一步 安装的过程中有几项 ? Project name ...

  4. 从零开始搭建django前后端分离项目 系列三(实战之异步任务执行)

    前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于 ...

  5. 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& ...

  6. Yii框架和Vue的完美结合完成前后端分离项目

    背景说明 本文假设你对Yii和Vue都比较熟悉,至少都在项目里用过,另外笔者新人,以后不定时放一些干货,欢迎程序媛关注 Yii是一个PHP全端框架,典型的mvc的项目结构,后端接口都是一个控制器里放了 ...

  7. 基于Vue的前后端分离项目实践

    一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...

  8. 《Spring Boot 入门及前后端分离项目实践》系列介绍

    课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发 ...

  9. 超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS

    现在好多使用gitlab-ci的持续集成的教程,大部分都是发布到linux系统上的,但是目前还是有很大一部分企业使用的都是windows系统使用IIS在部署.NET应用程序.这里写一下如何使用gitl ...

随机推荐

  1. I2C 总线原理与架构

    一.I2C总线原理 I2C是一种常用的串行总线,由串行数据线SDA 和串行时钟线SCL组成.I2C是一种多主机控制总线,它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须 ...

  2. CodeForces 70

    题目 A题 #include<bits/stdc++.h> using namespace std; int n,b,sum; int main(){ scanf("%d&quo ...

  3. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  4. 第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题

    一. 综述 该模块主要介绍:EF的性能优化插件Z.EntityFramework.Extensions,该插件收费. (一). 简介 1. 相关网站:http://www.zzzprojects.co ...

  5. [再寄小读者之数学篇](2014-10-18 利用 Lagrange 中值定理求极限)

    试求 $$\bex \vlm{n}n^2\sex{x^\frac{1}{n}-x^\frac{1}{n+1}},\quad x>0. \eex$$ 解答: $$\beex \bea \mbox{ ...

  6. js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意   js中escape对应的C#解码函数 System.We ...

  7. vscode 正则表达式替换

    比如把1.aa2.bbb替换成 1.aa2.bbb则,查找\d+ 替换成 \n$0 $0为查找的正则匹配项editplus为\0

  8. 可变有序列表list

    list是一种有序的集合,可以随时添加和删除其中的元素. 声明方法 list名=[元素1,元素2,元素3,--] >>> name=['Tom','David','Tony'] &g ...

  9. PHP 【一】

    输出    [输出在表格中] <!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> ...

  10. C++设计模式——解释器模式

    解释器模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对解释器模式是这样说的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.如 ...