`

REST总结之二

 
阅读更多

    由于有个合作项目,用到了REST,我们这边的服务器是java的,合作方那边主要是PHP环境,为了远程调用的问题,使用了REST作为API的实现方案。现在项目做得差不多了,下面记下自己的一点心得,算是笔记吧。

    REST(Representational State Transfer)的说法来自
“Architectural Styles and the Design of Network-based Software Architectures”(Roy Fielding,University of California - Irvine,2000),是Fielding大牛的一篇博士论文,从网上搜索下应该可以找到中文版。首先REST根本不是个技术,只是一个架构方式的总称,跟web service也没太大关系,只是凑巧它可以满足最简单的远程信息获取的需要。REST也完全不是新东西,其实早期的HTML静态网页都是REST,只不过随着各种动态脚本语言的使用,互联网的架构也偏离了早期的设定,REST倒是有点拨乱反正的味道。

    REST的主要特征包括:
1,所有的东西都是资源,资源用URI表示,每一个会话都是无状态的。
这句话啥意思,记得以前的静态网页不,http://localhost/hello.jsp这实际就是一个资源,这个URI就是他的地址。你肯定说这么简单还用学REST?,对,REST就是这么简单,但是情况再复杂一点,比如要写个购买商品的页面,咱们用JSF或者struts,从后台Session取个客户ID,再从购物车里头把商品列表取出来,我们高兴的写了一个http://localhost/buyProduct.do完成了这个功能,那么这个http://localhost/buyProduct.do的URI就不是REST了,他依赖于运行时环境和Session里的变量,这样的URI不能被重复执行,也就是说直接粘到浏览器运行肯定要报错的。是不是REST也很容易看,这玩意通过URI能访问不,能访问就是REST。

2,公开目录结构式的 URI
看了上面那个例子,那么怎么写这个URI呢,其实REST希望的URI是采用目录结构式的URI,用一种带层次的结构表示对资源的获取,比如我要获取论坛的一个topic,URI的定义就可以表示成http://localhost/discussion/topics/103,在这里topics就是上文我们说到的资源,后面的103是资源的ID。这样的URI简洁美观,搜索引擎友好,可以被浏览器缓存,与会话状态无关,然后你可能要问了,那我以前写的http://localhost/discussion/topics?id=103这样的URI呢?其实这种也可以算REST,URI的表示方式是由开发者决定的,当然http://localhost/discussion/topics?id=103这种写法似乎对搜索引擎不那么友好。

3.用显式的HTTP METHOD表示对资源的操作
以前我们都习惯于用动词来命名操作,比如buyProduct.do,而REST提出了用HTTP的四种方法POST, GET, PUT, DELETE分别表示对资源的CRUD操作,这样URI就成了资源的名词形式,方法成为了对资源的操作类别,比如删除一个帖子需要写成HTTP DELETE http://localhost/discussion/topics/103,更新一个帖子可以写成HTTP UPDATE http://localhost/discussion/topics/103/author/test/content/xxxx...。PUT和DELETE在很多服务器是不被支持的,一般需要用POST和GET来模拟。

    REST的返回格式可以是HTTP协议的任何内容,比如HTML,TEXT,大部分人包括我用REST都是为了远程获取服务器资源,所以返回的可以是内容集中的格式,比如XML和JSON。Web Service中的WSDL文件包含了服务的标识符,参数类别,返回值类别,检索和异常处理。这些都是REST不具备的,

分享到:
评论

相关推荐

    strusts2包struts2-rest-showcase-2.1.8.war实现ModelDriven接口项目心得

    自己的总结 还很不全面希望对你您有用 主要是控制url

    security:Spring Security 开发安全的REST服务 —— JoJozhai

    章节目录和总结文档 第1章 课程导学 第2章 开始开发 第3章 使用Spring MVC开发RESTful API 3-4 用户创建请求 3-5 修改和删除请求 3-6 服务异常处理 3-7 使用切片拦截REST服务 3-8 使用Filter和Interceptor拦截...

    r2m-plugin-ios:Xcode的磁铁rest2mobile插件

    Xcode的rest2mobile插件Xcode的rest2mobile插件会为您的iOS应用生成Objective-C代码,以与REST服务进行交互。 您可以找到描述如何安装和使用它的视频。 请访问 ,以获取有关命令行工具和Android Studio插件的更多...

    【JavaScript源代码】ES6扩展运算符的理解与使用场景.docx

    总结 1、替代apply方法,一般在函数调用时处理参数 2、剩余参数(rest运算符),主要针对函数形参  3、数据连接、合并  4、数组和对象的拷贝  5、字符串转数组  6、在函数调用时使用拓展运算符。  总结 扩展...

    GeoServer教程

    GeoServer地图开发解决方案(一):环境搭建篇  GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现的社区开源项目,...文中内容来自本人工作中通过网络学习后总结而成,如有类同纯属巧合,同时欢迎广大网友前来交流。

    快意编程 EXT JS Web开发技术详解.pdf

    然后按照Ext JS的开发顺序,首先讲解了页面的布局设定,接着详细讲解了各种常用组件的使用方法,并对实际开发中常用的画面场景进行了总结,最后通过完整的示例演示了Ext JS+REST+Spring+Hibernate的整合方案。...

    Apache atlas使用说明文档.pdf(转载分享请注明出处)

    元数据管理apache atlas 自己总结的使用说明文档。主要包括Apache atlas 第一章: Apache atlas简介 1.1 apache atlas 架构介绍 2 1.1.1核心组件Core 2 1.1.2 Integration 4 1.1.3 Metadata source 4 1.1.4 应用...

    Python中常见的异常总结

    rest2=1+str  二、什么是异常  a、程序运行时发生的错误的信号  b、异常种类:  在Python中不同的的异常可以用不同的类型区标识,不同的类对象标识不同的异常,一个异常标识一个错误 AttributeError 试图访问

    尚硅谷Java视频教程_SpringCloud视频教程

    课程目录: 00、尚硅谷_SpringBoot_源码、课件 01.尚硅谷_SpringCloud_前提概述 02.尚硅谷_SpringCloud_大纲概览 03.尚硅谷_SpringCloud_从面试题开始 04.尚硅谷_SpringCloud_...第一季架构技术总结和第二季展望

    快意编程EXT JS Web开发技术详解.part2

    然后按照Ext JS的开发顺序,首先讲解了页面的布局设定,接着详细讲解了各种常用组件的使用方法,并对实际开发中常用的画面场景进行了总结,最后通过完整的示例演示了Ext JS+REST+Spring+Hibernate的整合方案。...

    springFramework:它总结了研究spring框架的内容。

    它总结了研究spring框架的内容。 参考链接 基础 基础 申请 0. Spring基础 :pencil: [数据库编程] :pushpin: :pencil: [Spring Web表单] 1.建立一个Spring开发环境 依赖注入:请参阅Kong店编码阶段的视频 ...

    Java Web服务构建与运行(高清中文版).part2.rar

    第2章 全面了解WSDL  2.1 WSDL在Web服务中的作用  2.2 WSDL文档结构 36  2.3 Amazon E-Commerce Web服务  2.4 wsgen工具与JAX-B工件(Artifacts)  2.5 WSDL总结 2.6 下一章 第3章 SOAP消息编程 3.1 SOAP...

    尚硅谷SpringCloud视频(最新)

    尚硅谷Java视频教程_SpringCloud视频教程 本套视频从面试题,到SpringCloud各种核心组件,到最终的微服务架构总结,帮助大家快速入门、上手并精通微服务框架SpringCloud。...第一季架构技术总结和第二季展望

    Hadoop权威指南 第二版(中文版)

     2.2.1 数据模型的“旋风之旅”  2.2.2 实现  2.3 安装  2.3.1 测试驱动  2.4 客户机  2.4.1 Java  2.4.2 Avro,REST,以及Thrift  2.5 示例  2.5.1 模式  2.5.2 加载数据  2.5.3 Web查询  2.6 HBase和...

    LPOJ:一个基于Django REST框架和Vue.js的开源在线法官系统!

    目前总结广东外语外贸大学 演示地址: 说明文档: 简述 轻量级,便于部署和自定义定制 前一级分离,提高服务器性能 支持多机器多进程判题,判题更高效 支持C / C ++ / Java / Python2 / Python3和Swift5.1语言 ...

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    Springboot: 1.什么是spring boot 1 2.spring boot的优点 2 3.环境搭建 3 3.1 添加依赖 3 3.2 创建目录和配置文件 4 ...4 ....5 ....通过整合SpringMVC+SpringBoot+Mybatis构建一个...第一季架构技术总结和第二季展望

    WCF全面解析 下册.part2

    《WCF全面解析(套装上下册)》由蒋金楠所著,是作者多年潜心研究WCF技术的心血之作,也是这些年来从事WCF开发的经验总结。书如其名,此书涵盖了WCF几乎所有的知识点,并对其底层框架进行了“庖丁解牛”式的剖析,力求...

    Jersey-2.x-User-Guide:Jersey 2.x User Guide《Jersey 2.x 用户指南》 ,中文翻译

    近期也在做 REST 方面的总结,可以参阅《》。 文本用到的所有例子源码可以在 获取到。 截止现在(2018-4-17)Jersey的最新版本为 2.27,利用业余时间对此进行翻译,并在原文的基础上,插入配图,图文并茂方便用户...

    基于微信小程序的云看护健康管理系统的设计与实现

    第二章相关技术介绍 2.1微信小程序 2.2Django 框架 2.3Django REST framework 2.4网络爬虫 2.5mysql数据库介绍 2.6web 月艮务器 Nginx 2.7本章小结 第三章健康管理系统需求分析与设计 3.1需求分析 3.2系统总体功能...

Global site tag (gtag.js) - Google Analytics