使URL模式最佳实践

现在,你可能想知道怎么设计自己的URL结构。你可以按照visual studio自动生成的默认模式,但是也可以选取对你最有帮助的模式。

这些年,设计应用程序URL变的颇受重视,也出现了一些重要的设计原则。如果你遵循这些设计模式,对的你应用程序的实用性,简洁性,和搜索引擎排名都有显著的提升。

用户很关注URL,如果你不这么认为,想象一些你给某人发送一个Amazon的URL,如下:

http://www.amazon.com/Pro-ASP-NET-MVC-3-

Framework/dp/1430234040/ref=sr 1 13?s=books&ie=UTF8&qid=1294771153&sr=1-13

通过email发个某人这样的URL已经够糟糕了,如果通过电话读出来那更糟糕。如果URL是如下的那样:

http://www.amazon.com/books/pro-aspnet-mvc3-framework

这个URL我们可以通过电话来读给对方,非常自然。

要澄清的是,我们非常尊敬Amazon,我们也知道每个Amazon团队的成员都是聪明善良的人。他们不会因为我们对他们URL格式的批评而不卖书给我们了。我们非常喜欢Amazon,只是希望他们能修改一下URL。

下面几个如何生成友好URL的建议:

按照内容设计URL,而不是按照应用程序设计的细节,使用诸如/Articles/AnnualReport,而不是/Website v2/CachedContentServer/FromCache/AnnualReport。

通过ID表示内容标题,如果必须要使用ID(区分特定的项目,或者避免额外的数据库查询开销),使用/Articles/2392/AnnualReport。拼写虽然很长,但是对人和搜索引擎来说更加友好。

不要使用文件扩展名来呈现网页,比如.aspx,.mvc,但是对特殊类型的文件比如.jpg.pdf.zip则要使用后缀。web浏览器不关心文件扩展名,只要你的MIME type设置正确,但是用户仍然希望.pdf结尾的文件是个PDF文件。

创建有层次的URL,必须/Products/Menswear/Shirts/Red,这样用户可以猜测父级的URL。

保持忽略大小写敏感,ASP.NET路由系统默认的是对大小写不敏感的

避免使用标签,代码,字符序列。如果太分割单词,使用-号,比如/my-great-article。下划线不是很友好,使用URL编码的空格也很奇怪,比如/my+great+article,也可能让人厌恶,比如(/my%20great%20article)

不要改变URL,无效的链接可能会失去商机。当你改变URL,保证老的URL结构仍然能够访问到。

一致化的格式。对你整个应用程序,采用一种URL格式。URL应该简短,易于拼写,永久有效,并且可以能显出整个站点的结构。

正确选择GET还是POST

根据经验,GET请求应该用来获取只读信息,POST请求用来操作数据。在标准术语中,GET请求针对的是安全交互,除了请求信息之外没有任何副作用。POST请求是对非非安全交互的,比如修改信息或者建立信息。这个惯例是由W3C设立,http://www.w3.org/Provider/Style/URI。GET请求的信息可以从地址中获得,所有的信息都包含在URL中,所有不太可能讲这种link地址加入收藏夹。

不要使用GET请求来操作数据状态。很多web程序员在2005年才明白这一点的重要性,那时google网页加速对公众开放。这个应用程序预先从页面中获取内容,这个对于HTTP是合法的,因为GET请求是安全的。

不幸的是,很多web程序员忽略了HTTP的惯例,将简单的链接导向’delete item‘’add to shopping car‘等操作。这样就混乱了。

有的公司以为他们的网站受到了反复的恶意***,因为所有的内容都被删除了。但是后来才发现是搜索爬虫点击了管理员页面,抓取了所有的delete链接。认证系统可能会保护你,但是对于web加速器可能就保护不了了。

精通MVC3摘译(5)-使用URL模式最佳实践相关推荐

  1. 基于阿里云移动推送的移动应用推送模式最佳实践

    摘要: ### 一.概念 以下概念对应系统设计时的语义,对于如何合理使用移动推送有借鉴意义 #### 1.1 设备 安装并使用开发者移动应用的装置 #### 1.2 设备ID 阿里云移动推送为设备分配 ...

  2. Android夜间模式最佳实践

    转自:Android夜间模式最佳实践 由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验.目前越来越多的应用开始把夜间模式加到自家应用中,没 ...

  3. Spring体系下单例策略模式,java策略模式最佳实践

    java springboot 策略模式最佳实践 本文将以最常用最好理解的一个业务场景--支付进行模拟 将不同支付场景业务拆分,后续增加.修改业务,逻辑解耦. 简单的逻辑流程如下: 业务类型为支付 i ...

  4. Nacos 集群部署模式最佳实践

    作者 | kiritomoe 来源 | https://mp.weixin.qq.com/s/sSTY5BivxrH4wR2-dNMkzw 1 前言 Nacos 支持两种部署模式:单机模式和集群模式. ...

  5. 精通MVC3摘译(8)-处理输出(2)

    使用ViewBag传递数据 View Bag允许你在一个dynamic对象上定义任何属性,并且在view中访问它.这个dynamic对象可以通过Controller.ViewBag属性访问它.如下演示 ...

  6. 精通MVC3摘译(9)-过滤器

    Filter在请求管道注入额外的逻辑.他们提供简单优雅的方法实现横切点关注.这个术语指的是在穿越整个应用程序中使用,而且不适合使用在任何单独的地方,所以这会打破关注模式的分离.经典的横切点关注的例子比 ...

  7. 生产者消费者模式最佳实践

    测试环境:ubuntu18.04+opencv4.2+Qt 一个生产者-消费者模式下的视频处理框架.基础结构:视频读取类线程不断读取视频帧,处理类线程对图像进行处理,之后通过信号与槽机制在主线程中显示 ...

  8. SCSF 系列:Smart Client Software Factory 中 MVP 模式最佳实践

    序: 让我们首先通过现实的例子来看看 Model.View.Presenter 应该如何分工吧.View 就像是客服人员(或者留学中介里的顾问),Model 是那些具体的技术支持人员(或者文案,专门处 ...

  9. Java笔记018-抽象类、抽象类最佳实践-模板设计模式、接口、内部类

    目录 抽象类 先看一个问题 小结: 抽象类快速入门 抽象类的介绍 抽象类使用的注意事项和细节讨论 抽象类练习题 抽象类最佳实践-模板设计模式 基本介绍 模板设计模式能解决的问题 最佳实践 最佳实践 接 ...

  10. 检查字符串是否为有效URL的最佳正则表达式是什么?

    如何检查给定的字符串是否是有效的URL地址? 我对正则表达式的了解是基础知识,因此我无法从网上已经看到的数百种正则表达式中进行选择. #1楼 function validateURL(textval) ...

最新文章

  1. HTML用cookie实现自动登录,用cookie实现websocket自动登录,session状态保留。
  2. 一文详解LeGO-LOAM中的点云分割
  3. Hadoop记录-metastore jmx配置
  4. C# Winform小程序:局域网设置NTP服务器、实现时间同步
  5. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选
  6. 从 TFS 迁移源代码到 git
  7. linux进程的高级管理,Linux高级程序设计(第2版) PDF扫描版[94MB]
  8. 20 MM配置-BP业务伙伴-定义业务伙伴和供应商编码保持一致
  9. 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
  10. python入门指南txt-pip安装和使用入门指南
  11. Unity3D之NGUI基础3:UILabel显示字体
  12. 80后 程序猿 单恋10年,是一种怎样的体验?
  13. 开源协议、开源贡献协议与OpenHarmony
  14. 陌陌八成营收靠直播 直播行业已进入两极分化
  15. 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
  16. 这些数据爬虫网站,帮你工作提质增效,还不收藏?
  17. ​iPhone 14 Pro 全系降价 700 元;Gmail 之父:有了 ChatGPT,搜索引擎活不过两年了|极客头条...
  18. 【知识蒸馏】什么是知识蒸馏、方法解读
  19. 计算机组成原理实验主存储器,计算机组成原理实验课件--存储器.ppt
  20. 爬虫:爬东方财富网股票数据

热门文章

  1. 甲醛|甲醛介绍|甲醛如何清理
  2. 人才招聘中的“笔迹分析技术”
  3. 编程语言-Python2-问题整理
  4. 结对第一次—原型设计
  5. [Error]Python虚拟环境报错 OSError: setuptools pip wheel failed with error code 2
  6. 物理运动网站收藏 ╮(╯▽╰)╭
  7. CoreData数据库版本迁移
  8. accel-pptp 部署
  9. ruby入门tips
  10. Delegate如何进行类型转换?