http的rest服务简介

介绍

这篇文章旨在揭开REST(代表性状态转移)Web设计概念的神秘面纱。 REST基于客户端服务器模型。 REST是一组原则,例如描述了如何使用标准来开发Web应用程序。 其主要目的是预期常见的实现问题并组织逻辑客户端和服务器之间的关系。 您可以将其称为一组最佳实践!

在实践中,REST提供有关如何实现Web应用程序接口到Web的指南。 通常,有人说Web应用程序是否以类似REST的方式构建。 REST通常与HTTP关联(或实现),但也可以与其他技术一起实现。 REST是平台和语言独立的。

REST的发明者Roy Fielding说REST旨在实现以下目标:

  • 接口的通用性 –所有Web应用程序都应以相同的方式实现其接口。 通过共享相同的约定,其他应用程序知道如何调用您的约定,并且您知道如何调用它们的约定。 每个新应用程序的学习曲线最少。
  • 组件的独立部署 –一旦实现和部署了应用程序及其REST接口,就必须能够实现或重新实现以及部署任何REST接口,而不必重写或修改现有的REST接口。
  • 封装遗留系统 –未以类似REST的方式实现的现有应用程序可以与REST接口包装在一起,使其成为类似REST的应用程序。
  • 减少交互延迟的中间组件 –例如,为了处理流量,通常将用户/客户端请求分发到多个物理服务器(不要与逻辑服务器混淆)。 这对用户是透明的。 由于REST使用接口,因此轻松实现或添加额外的分层组件(例如物理服务器)来处理最大数量的客户端请求。
  • 强调组件交互的可伸缩性 –这是对先前观点的补充。
  • 加强安全性 –通过Internet交换信息可能会带来风险。 黑客可以使用它来扭曲系统。 REST原则消除了许多此类风险。

概念

  • 资源 –逻辑资源是可以使用全局标识符寻址和引用的任何概念(汽车,狗,用户,发票等)。 通常,在通过HTTP实现REST时,可以使用URI访问每个资源(例如:http://www.mysite.com/invoice/34657)。
  • 服务器 –逻辑服务器是资源以及任何相应的数据存储功能所在的位置。 这样的服务器不处理最终用户界面(GUI)。
  • 客户端 –逻辑客户端向逻辑服务器发出请求以对其资源执行操作。 例如,客户端可以请求资源状态,创建资源,更新资源,删除资源等……客户端不具有资源或相应的数据存储功能。 但是,它们处理最终用户界面(GUI)。
  • 请求和响应 –客户端和服务器之间的交互是通过客户端到服务器的请求以及服务器到客户端的请求响应来组织的。 请求可以包含资源的表示形式。
  • 表示形式 –表示形式是表示资源当前状态的文档。 例如,当客户端请求更新资源时,它也可以是新的期望状态。

原则

以下是适用于类似REST的应用程序的一些原则:

  • 资源的状态保持在服务器内部,而不是客户端内部 –客户端可以请求资源,也可以使用对服务器的请求更新资源。
  • 请求之间没有在服务器上保存任何客户端上下文 –服务器不得存储客户端的状态。 否则,当达到数百万用户时,这将破坏REST的可扩展性目标。 请记住,请求可以分配到多个物理服务器,这可能会导致物理资源消耗问题。
  • 客户端请求包含为它提供服务的所有信息 –无论客户端将哪个请求发送到服务器,它都必须足够完整,服务器才能处理它。
  • 会话状态存储在客户端上 –如有必要,有关逻辑服务器和逻辑客户端之间通信状态的任何信息都必须保存在客户端上。
  • 资源的多种表示可以共存 –用于在请求和响应中表示资源状态的所选格式是免费的(XML,JSON等)。 可以使用多种格式。
  • 响应明确表示其可缓存性 –服务器返回对请求的响应时,客户端可能会缓存也可能不会缓存其中包含的信息。 如果不是,则客户端应发出新请求以获取资源的最新状态。
  • 按需编码 –这是REST中的可选功能。 客户端可以从服务器获取一些额外的代码以丰富其功能。 一个示例是Javascript。

关于会话状态,在物理服务器和物理客户端之间实现登录注销(即身份验证)系统需要在服务器端保存会话信息。 否则,如果将其保存在客户端,则可能会从客户端入侵它。

普遍同意,在客户端和服务器之间实施身份验证所需的任何“资源”都被认为是REST的范围。 这些身份验证资源不必遵循REST原则(有关更多详细信息,请参见此处 )。

通过HTTP的REST

在通过HTTP实现REST时,逻辑REST客户端通常是Web浏览器,而逻辑REST服务器是Web服务器。 REST API(或服务)必须是超文本驱动的。

关于资源ID:

  • 优先使用名词而不是动词来表示资源的类型(猫,狗,汽车等)。
  • 资源的唯一ID是URI ,例如:http://www.mysite.com/invoice/34657。
  • 也可以使用URI访问一组资源,例如:http://www.mysite.com/user/7723/invoices。

当资源引用另一个资源时,在资源表示中使用URI也被认为是一种好习惯。 例如,在表示资源的XML文档中:

<dog self='www.mysite.com/dog/923' ><name>Lassie</name><owner ref='www.mysite.com/owner/411' />
</dog>

为了对资源执行操作,简单的HTTP用于在机器之间进行调用。 HTTP知道几种类型的调用:PUT,GET,POST,DELETE,HEAD,CONNECT,PATCH,TRACE和OPTIONS。

但是,REST仅使用四个:PUT,GET,POST和DELETE。

  • GET –客户端可以通过使用资源的URI向服务器发出HTTP GET请求来请求资源的状态。 REST要求此操作不会对资源状态(营养不足)产生任何副作用。
  • PUT –创建新资源。 由于客户端不知道下一个发票号,因此URI可以是:http://www.mysite.com/invoice。 如果资源已经创建,则不会重新创建。 换句话说,例如(并且必须)在http://www.mysite.com/invoice/841上的REST PUT是幂等的。 如果客户端多次调用该PUT,则不能多次创建发票841。
  • POST – REST要求POST客户端请求使用客户端提供的信息来更新相应的资源,或者如果不存在则创建该资源。 此操作不是幂等的。
  • 删除-此操作将永久删除资源。 它是幂等的。

REM:实施
http://www.mysite.com/invoice/add URI不被视为符合REST的惯例。

用于返回资源表示形式的格式(JSON,XML ...)在服务器响应的媒体类型(多用途Internet邮件扩展– MIME)中设置。

为了处理成功或错误问题,HTTP REST建议使用HTTP状态代码之一 。

附加阅读

  • http://www.infoq.com/articles/rest-introduction

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge 对REST概念的介绍 。

翻译自: https://www.javacodegeeks.com/2012/10/introduction-to-rest-concepts.html

http的rest服务简介

http的rest服务简介_REST概念简介相关推荐

  1. BigData:MaxCompute大数据计算服务(阿里巴巴开发/原ODPS/云计算分布式)的简介(基本概念/功能/流程图)、使用方法之详细攻略

    BigData:MaxCompute大数据计算服务(阿里巴巴开发/原ODPS/云计算分布式)的简介(基本概念/功能/流程图).使用方法之详细攻略 目录 背景-传统分布式计算的弊端 MaxCompute ...

  2. OS操作系统概念简介

    操作系统 操作系统是一种程序:控制应用程序执行的程序 操作系统是一种接口:应用程序和计算机硬件间的接口 操作系统就是让普通人也会用电脑的软件(为了方便),就是把整个电脑资源包装起来的一个图形界面(为了 ...

  3. 进程控制概念简介 多线程上篇(三)

    进程控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主进行的 ...

  4. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )

    文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...

  5. 项目背景介绍及文件系统基本概念简介

    文章目录 1 项目背景介绍 2 文件系统基本概念简介 2.1 文件系统接口 2.2 存储的基本单位 2.3 文件存储单位 2.4 文件结构 3 海量存储选用大文件结构的原因 1 项目背景介绍 根据淘宝 ...

  6. GIT项目管理工具(part1)--简介及概念

    本系列BLOG为鄙人学习GIT时的学习笔记.前一个知识点引出后一个知识点,后一个例子接着前一个例子. 文章目录 GIT简介 基本概念 导航 系列文章目录 GIT简介 什么是GIT(项目管理工具) gi ...

  7. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一) 目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronize ...

  8. 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介

    上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...

  9. 计算机动画基本概念,计算机三维动画基本概念简介

    简单介绍三维计算机动画技术的原理和实现,对里面的几项关键部分的概念进行阐述说明. 2 1 0 0年 9月 第 9期 (第 1 2期 )总 4 广西轻工业 G A G IOR A F IH D SR 计 ...

  10. 【CEGUI】概念简介

    CEGUI 概念简介 背景 Crazy Eddie's GUI(MIT License),一款开源的GUI(图形用户界面)库.使用C++实现,遵循OOP,其宗旨: games developers w ...

最新文章

  1. Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27
  2. x86 X64指令集之间的关系
  3. CSS3 animation-timing-function steps()
  4. Android杂谈--网络状态判断(3G/WIFI)
  5. Java Review - 并发编程_独占锁ReentrantLock原理源码剖析
  6. ”System.Configuration.ConfigurationSettings.AppSettings“ 已过时----解决方案
  7. 【Linux系统编程学习】 GDB调试器的简单使用
  8. gitee提交代码_git 版本控制,github和gitee
  9. 易语言注入 c dll,易语言DLL注入模块简单型
  10. Java案例:使用clone()方法克隆对象
  11. ANR问题的log位置
  12. Qt 2D绘图之一:基本图形绘制和渐变填充
  13. ubuntu18重启vncserver_Ubuntu 18.04 LTS安装vncserver虚拟网络控制台
  14. python 三维数组旋转_numpy.transpose对三维数组的转置方法
  15. 干细胞相关研究最新进展(2021年9月)
  16. Java指令全集_Java的JVM字节码指令集详解
  17. 利用simulink分析系统各种传递函数的BODE图、阶跃响应、单位脉冲响应
  18. Java语言中类与对象的创建
  19. 【自动驾驶】常见位姿估计算法的比较: 三角测量、PNP、ICP、
  20. Ubuntu16安装docker

热门文章

  1. 计算机网络技术超星尔雅章节检测,计算机网络技术超星尔雅答案题库
  2. 如何用VS2015手撕白菜
  3. 微信小程序集成融云 SDK (即时通讯) 集成必备条件
  4. VC2015搭建OpenCV环境(超详细教程)
  5. 【剑指Offer(专项突击版)】001~059题目题解汇总
  6. 3D纹理贴图制软件The Foundry Mari for Mac
  7. 《Java编程规范学习笔记》
  8. 记一次hw中的上线骚姿势(异速联+用友U8)
  9. java模拟借书系统E R图_作业—模拟借书系统
  10. 进销存excel_进销存管理系统excel模板