zoukankan      html  css  js  c++  java
  • 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或者不严格使用都是完全没有问题的

  • 相关阅读:
    Python3学习笔记(十二):闭包
    Python3学习笔记(十一):函数参数详解
    PostgreSQL psql中如何查看快捷功能的对应函数
    PostgreSQL逻辑复制槽 pg_recvlogical test_decoding wal2json
    记一次内存占用过高的分析
    数据库一致性解读
    PostgreSQL常用插件收集
    PostgreSQL truncate table会释放索引的空间
    PostgreSQL锁级别及什么操作获取什么锁
    PostgreSQL设置事务隔离级别实验
  • 原文地址:https://www.cnblogs.com/jimsfriend/p/10579468.html
Copyright © 2011-2022 走看看