restful推荐去看大神的博客

tslint注释标记

ts文件中使用以下注释来临时忽略规则出现的错误,参考这里

  • / tslint:disable /——忽略该行以下所有代码出现的错误提示
  • / tslint:enable /——当前ts文件重新启用tslint
  • // tslint:disable-line——忽略当前行代码出现的错误提示
  • // tslint:disable-next-line——忽略下一行代码出现的错误提示

RESTful

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

原则条件:

Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。

PRC:远程过程调用
RFC:request for comments请求意见稿

我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。

REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST.

从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释:

资源与URI

**任何事物,只要有被引用到的必要,它就是一个资源。资源可以是实体(例如手机号码),也可以只是一个抽象概念(例如价值) **

URI:uniform resource identifier

URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联

统一资源接口

RESTFul架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问

GET

  • 安全且幂等
  • 获取表示
  • 变更时获取表示(缓存)
  • 200(OK) - 表示已在响应中发出
  • 204(无内容) - 资源有空表示
  • 301(Moved Permanently) - 资源的URI已被更新
  • 303(See Other) - 其他(如,负载均衡)
  • 304(not modified)- 资源未更改(缓存)
  • 400 (bad request)- 指代坏请求(如,参数错误)
  • 404 (not found)- 资源不存在
  • 406 (not acceptable)- 服务端不支持所需表示
  • 500 (internal server error)- 通用错误响应
  • 503 (Service Unavailable)- 服务端当前无法处理请求

POST

  • 不安全且不幂等
  • 使用服务端管理的(自动产生)的实例号创建资源
  • 创建子资源
  • 部分更新资源
  • 如果没有被修改,则不过更新资源(乐观锁)
  • 200(OK)- 如果现有资源已被更改
  • 201(created)- 如果新资源被创建
  • 202(accepted)- 已接受处理请求但尚未完成(异步处理)
  • 301(Moved Permanently)- 资源的URI被更新
  • 303(See Other)- 其他(如,负载均衡)
  • 400(bad request)- 指代坏请求
  • 404 (not found)- 资源不存在
  • 406 (not acceptable)- 服务端不支持所需表示
  • 409 (conflict)- 通用冲突
  • 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
  • 415 (unsupported media type)- 接受到的表示不受支持
  • 500 (internal server error)- 通用错误响应
  • 503 (Service Unavailable)- 服务当前无法处理请求

PUT

  • 不安全但幂等
  • 用客户端管理的实例号创建一个资源
  • 通过替换的方式更新资源
  • 如果未被修改,则更新资源(乐观锁)
  • 200 (OK)- 如果已存在资源被更改
  • 201 (created)- 如果新资源被创建
  • 301(Moved Permanently)- 资源的URI已更改
  • 303 (See Other)- 其他(如,负载均衡)
  • 400 (bad request)- 指代坏请求
  • 404 (not found)- 资源不存在
  • 406 (not acceptable)- 服务端不支持所需表示
  • 409 (conflict)- 通用冲突
  • 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
  • 415 (unsupported media type)- 接受到的表示不受支持
  • 500 (internal server error)- 通用错误响应
  • 503 (Service Unavailable)- 服务当前无法处理请求

DELETE

  • 不安全但幂等
  • 删除资源
  • 200 (OK)- 资源已被删除
  • 301 (Moved Permanently)- 资源的URI已更改
  • 303 (See Other)- 其他,如负载均衡
  • 400 (bad request)- 指代坏请求
  • 404 (not found)- 资源不存在
  • 409 (conflict)- 通用冲突
  • 500 (internal server error)- 通用错误响应
  • 503 (Service Unavailable)- 服务端当前无法处理请求

“客户端/服务端的形式”,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。

如何开发在互联网环境中使用的软件。

RESTful架构,就是目前最流行的一种互联网软件架构。表现层状态转化

它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

R资源:

REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"。

**所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。**它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

R表现层representation:

"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)

URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

状态转化State Transfer:

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

总结一下什么是RESTful架构:

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

TSlint注释忽略错误和RESTful理解相关推荐

  1. VisualAssistX中文注释提示错误 解决办法

    VisualAssistX中文注释提示错误 解决办法 Visual Assist X中文注释为提醒注释错误,而且在注释下面以红线标识,如下图: 这是因为Visual Assist X认为中文的注释是拼 ...

  2. 关于使用工具包,应用程序中发生了无法处理的异常。如果单击“继续”,应用程序忽略错误尝试继续运行。点击退出,应用程序将会“关闭”。异常来自HRESULT:0x80040228的错误问题!

    项目场景: 在使用工具包导出图层的时候 问题描述 遇到了这样一个错误:应用程序中发生了无法处理的异常.如果单击"继续",应用程序忽略错误尝试继续运行.点击退出,应用程序将会&quo ...

  3. linux useradd bash,对于bash:useradd:command not found错误的一点理解

    对于bash:useradd:command not found错误的一点理解 问题: 前两天做实验,在命令行中添加用户时显示bash:useradd:command not found的错误,在网上 ...

  4. 计算机求和公式IFEROR,excel求和技巧:如何忽略错误值进行求和

    原标题:excel求和技巧:如何忽略错误值进行求和 编按:看似简单的求和,其实是问题的多发地!最近收到小伙伴的留言,"对包含错误值的数据求和该怎么做?要是直接求和,得到的结果也是一个错误值, ...

  5. excel求和技巧:如何忽略错误值进行求和

    按照对应的订单号引用已有的收货金额,这种问题相信很多朋友都会处理,用VLOOKUP函数就能搞定. 我们今天要讨论的是如何对含有错误值的数据进行求和. 如果直接求和,得到的结果也是一个错误值,如下图: ...

  6. Excel忽略错误单元格求和

    SumIf() 函数 SUMIF("A1:B99","<=9E+307") 原因: 9×10307 9 × 10 307 9\times10^{307}是 ...

  7. mysql source 忽略错误_mysql导入忽略错误

    今天在测试机导入数据库的备份文件,因为用户名有相同的,字段又是一个唯一性的索引导致失败了,接下来吾爱编程就大家介绍一下mysql忽略错误继续执行下条命令,有需要的小伙伴可以参考一下: 1.错误提示:[ ...

  8. 从kernel源代码的角度分析signal的错误用法和理解

    读这份文档之前,建议先浏览一下 <Unix Advanced Programming >里面的signal 一章和下面这份出 自IBM 论坛的文章:进程间通信 信号(上) http://w ...

  9. java 编译 忽略错误_Maven在Java8下如何忽略Javadoc的编译错误详解

    javaDoc简介And基础知识 (一) Java注释类型 //用于单行注释. /*...*/用于多行注释,从/*开始,到*/结束,不能嵌套. /**...*/则是为支持jdk工具javadoc.ex ...

最新文章

  1. iOS 9音频应用播放音频之ios9音频基本功能
  2. PostgreSQL 创建库时如何指定 Collate, Ctype
  3. vs2010下release版本调试设置
  4. 3D Human相关研究总结:人体、姿态估计、人体重建等
  5. sun服务器清理内存日志_sun服务器系统日志
  6. ORACLE如何一次性修改用户连接数?
  7. 四个修改Docker默认存储位置的方法
  8. linux嵌入式物联网_嵌入式Linux如何加速物联网发展
  9. python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...
  10. singft 函数 matlab,(新)信号与系统MATLAB实验全.doc
  11. POJ3982 序列【大数】
  12. 协同过滤之ALS-WR算法
  13. idea快捷键汇总mac_IntelliJ IDEA for mac 快捷键大全
  14. verilog语法记录(一)
  15. Python的学习笔记案例4--52周存钱挑战3.0
  16. 手机怎么打开谷歌官网页服务器地址,google手机地图打不开了的解决方法
  17. GetLastError()函数返回值对照列表
  18. editplus5激活码 文件下载 汉化包
  19. 【分析】RBD Mirroring - 原理、概念、命令
  20. 武装到牙齿的Android重度依赖者

热门文章

  1. php ico容器,Laravel 核心——IoC 服务容器
  2. ​​​​​​​深度学习在场景文字识别技术中的应用综述
  3. 论语_JavaScript版
  4. 《童虎学习笔记》5分钟Citus之SQL命令参考
  5. Android 10.0 wifi的随机mac地址修改为固定不变
  6. C#、 Unity 删除空的文件夹
  7. October CMS - 快速入门 8 slugs和分页
  8. 常用的人脸识别库及下载地址
  9. DLink 流批一体技术架构及优势 | 滴普科技FastData系列解读
  10. 2021年豆瓣图书爬取-根据ISBN爬取图书信息