REST服务开发实战,互联网营销

  REST介绍

  如果要说什么是REST的话,那最好先从Web(万维网)说起。

  什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web),具体的我就不多说了。总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web。当然,Web只是互联网的一部分而已,只是大家用的最多而已,我们访问的所有网站都是基于Web。

  那么,Web和REST之间究竟有什么关系呢?我们接下来将聊聊组成Web的几大基础技术,URI(统一资源标识符,用来标识资源)、HTTP(超文本传输/转移协议,用来操作资源)、Hypertext(超文本,用来描述资源的内容与状态,我们可以用HTML、XML、JSON或者自定义格式的文本来描述任何一个资源)。

  那我们再来看看什么是REST呢?其实REST并不是一种新兴的技术语言,也不是什么新的技术框架。准确来说说REST只是一种概念、风格或者约束,是回归HTTP本身的建议。

  REST是由Roy Thomas Fieding在他的博士论文《Architectural Styles and the Design of Network-based Software Architectures》(《架构风格与基于网络的软件架构设计》)中提出的一种架构思想。Roy Fielding是Apache基金会的合作创作者,同时也是HTTP、URI等Web基础协议的主要设计者。从Roy Fielding的背景,我想大家就应该能了解到REST与Web之间的关系了吧。的确,在REST中我们关注技术实际上也只是URI、HTTP、Hypertext而已。

  Roy在他的论文中提出了一个RESTful应用应该具备的几点约束。

  • 每个资源都应该有一个唯一的标识
  • 使用标准的方法来更改资源的状态
  • Request和Response的自描述
  • 资源多重表述
  • 无状态的服务

  Roy认为,只有具备了上面的约束的应用才能算是REST应用,其实现在好多所谓的REST应用或服务,其实并不能算是真正的REST应用。

  我发现,其实目前很多所谓的REST应用,只是RPC而已,出现这样的情况其实很正常,因为RPC实际上更符合一般程序员的思维。其实REST和RPC之间还是有很大的差异的,下面我们说一说REST和RPC之间的区别。

  • REST强调资源有唯一的URI;而RPC更加强调过程(动词),由统一的接口来调用它们。
  • REST回归HTTP最初的设计;RPC仅仅只是把HTTP作为传输协议来使用。
  • REST是由超文本驱动的;RPC是由方法驱动的。
  • REST强调HTTP通信的语义可见性,通过消息头和标准的HTTP方法来体现;RPC把语义封装在HTTP消息体中。

  REST的应用场景

  通过上面的介绍,大家应该对REST有一些最基本的了解,由于RESTf应用的这些约束,我们可以很轻易的了解和使用REST的服务(只要你了解HTTP)。

  其实,我们经常容易犯一个错误就是,当我们了解了一个新的技术,就会用这个技术来解决所有的问题。有一句谚语是这么来说的:“在锤子的眼里,所有的东西都是钉子”,其实REST也只是我们工具箱里面的其中的一个工具而已,希望不要把它当做我们唯一的工具。那么我们就来聊聊适合使用REST的应用场景和不适合使用REST的应用场景。

  在我看来REST最适合的应用场景其实是需要对外暴露服务的时候,这个时候,我们可以充分利用REST的自描述、无状态、唯一标识等特性来提供清晰、友好的API,而且现在的Jesery、RESTEasy等JAX-RS框架也提供了OAuth的支持,基本上能够保证服务安全。

  最不适合的应用场景是对性能要求高的系统内部之间的服务调用,当你在这个时候使用REST的话,那么REST所有的特性都会变成拖累。这个时候,还是需要选择更底层的通信协议和方式会更好一些,比如ICE。这样的错误,我曾经犯过,后来通过很长时间的努力才慢慢的将这个错误改过来。

  规划REST服务

  当我们要规划一个REST服务的时候,其中最关键的概念其实就是“资源”。

  资源是什么呢?广义上讲,任何事物只要它有用,那么它就是资源。狭义的讲(在Web环境中),它是一个可以存放、连接在计算机上,可以通过比特流进行操控的实体。一个实体想成为资源,它必须有一个URI。在这里URI包含了两重含义:1)它是资源的名称 2)它是资源的地址。

  在我们规划URI的时候,有几点希望大家能够注意一下:

  • 一个URI标识一个资源,但是一个资源可以被多个URI标识。
  • 资源也是有层次的,这个层次应该在URI上充分的体现出来。
  • 在规划URI的时候,需要定义一些团队内部确认的关键字或符号,这些关键字或符号是有特殊意义的,不能随便使用。
  • 需要有一个URI定义的文档,以备以后的查询和维护。
  • 可以使用URI Template来描述URI的定义。如何使用URI Template也看看这篇文章

  当我们定义好资源之后,接下来要做的事情就是定义操作资源的方法以及资源的表述格式了。

  使用HTTP提供的基本方法来对资源进行操作,一般的操作定义如下:POST(创建资源)、GET(获取资源)、PUT(修改资源)、DELETE(删除)。它们正好对应了CRUD。

  对资源的表述,一般的选择会是XML,但是我更加推荐使用JSON来表述资源。在网络中的传输量也小,而且也便于JavaScript来解析,而且现在其他语言解析也是非常方便的事情。不过,最关键的还是占用更少的资源,让同样的资源能够服务更多的人。

  下面的这张图就很好的说明了REST中最重要的围绕资源的三角关系。

  在InfoQ上有一篇很好的文章来介绍如何规划REST服务《如何获取(GET)一杯咖啡——星巴克REST案例分析》,估计大家看完这篇文章,应该对如何规划REST服务会有更深的认识。

  选择一个快速方便的REST框架

  现在REST的框架也非常多,推荐大家使用Jersey和RESTEasy来创建自己的REST服务。

  这两个框架都出自名门,Jersey是由SUN提供的JAX-RS实现参考,对JAX-RS支持的最为充分和快速,基本上所有的JAX-RS的新特性都会在Jersey里第一个体现出来,而且提供了相当全了例子让你学习。RESTEasy则是有JBoss开源的项目,它同样有很多优点,而且文档也比Jersey更好一些,但是和他JBoss应用服务器绑定的比较紧密,这点我个人不太喜欢,如果是熟悉JBoss应用服务器的人可以选择RESTEasy,它给人的感觉更加成熟一些,不像Jersey会很快的加入新的特性。不过,需要根据个人自己的喜好来选择。

  如何使用Jersey来快速创建REST应用,参见通过Jersey快速构建REST应用,如何使用RESTEasy快速创建REST应用,参见使用RESTEasy快速创建REST应用

  发布REST服务需要注意的地方

  之前我也提到了使用REST的最佳的场景是对外提供公开的服务,也就是所谓的OpenAPI。一旦开放了API,我们就很难控制这些API的使用及其调整了,如果在开放这些API之前考虑的不周到的话,那么后期的维护那就会是一个非常麻烦的事情了。所以,当我们决定要开放API的时候,那么我们一定要注意一些事情,下面的这些算是我的经验总结。

  对外暴露API时,需要注意版本规划,以便以后API的升级和维护。API的版本规划,在开始开放API的之前,是一件很容易被忽视的。但是一旦你的API开放之后,那么你就会发现,没有对开放的API进行版本规划,是一件非常愚蠢的事情。当你的API使用的人越来越多,当你的开放的API越来越多,一旦某个API要升级,输入和输出发生变化的时候,你根本不知道该通知谁来升级,解决问题的时候也非常麻烦。

  同样,由于对外暴露API之后,你很难控制API被调用的次数和意图,需要在一些关键的API被调用的次数和频率上进行控制,以免受到恶意的攻击。但是,到底次数和频率应该控制在一个什么样的程度,就要看你的API的关键程度以及负载能力了,每个系统都会有自己的评判,只要你掌握好了这个尺度,应该都不会有问题的。

  另外,由于现在浏览器的限制,只能使用HTTP的GET和POST方法,如果通过AJAX直接调用REST服务,当你的服务中需要使用HTTP的PUT或者DELETE方法来调用的话,最好是考虑使用重载POST方式将需要使用PUT和DELETE方法调用的服务能够通过POST来调用。

  关于作者

  邓涛(Tony Deng),目前从事移动互联网领域,关注高性能、高并发的互联网架构。

时间: 2024-09-25 20:48:44

REST服务开发实战,互联网营销的相关文章

实战网络营销人才需求与日俱增

中介交易 SEO诊断 淘宝客 云主机 技术大厅 实战网络营销人才需求与日俱增 随着网络营销与电子商务的市场机制日趋完善,网络营销已经成为企业越来越依赖的营销方式.实战网络营销人才已经成为企业人才战略的重要组成部分,浏览各大招聘网站,新浪.搜狐.网易等名企,招聘最多的职位就是网络营销经理,媒介经理等与网络营销相关的职位.面对高薪和广阔的发展空间,许多毕业生却只能望职心叹,因为职位要求的能力与学校中学习的差距实在很大. 针对这一情况,为解决大学生就业问题.填补人才缺口,同时为了满足企业对网络营销专业

粉丝经济有望改变互联网营销格局

互联网的发展让营销有了本质上的变化,对于大多数行业来说,进入市场的门槛越来越低,产品同质化严重,导致市场竞争愈发激烈.加之随着人们获取和分享信息变的前所未有的便捷,网民自主意识更加强烈,传统的营销模式越来越难以打动日益精明的消费者,因此基于情感关联的粉丝营销成为近两年备受追捧的营销方式.品牌迫切需要有效易用的粉丝营销平台,与用户进行无障碍的深度沟通,并借助粉丝间的相互传导模式,快速实现品牌增值. 在此背景下,百度贴吧企业平台战略发布会于2014年7月17日举行.贴吧宣布将通过开放贴吧官方吧,为企

世界极具权威的互联网营销培训大会在上海华丽举行

硅谷网10月9日讯 2012年11月8日~11日,第五十届世界互联网峰会,将在上海波特曼http://www.aliyun.com/zixun/aggregation/10026.html">丽思卡尔顿剧院会议中心举行,为期四天.届时,国际级互联网大师们将齐聚上海,分享全球顶尖网络营销智慧与实战网络营销经验.据悉,只要全程参与,就有可能成为幸运观众,独得一笔高额奖金,网络营销的无穷威力,一定会让现场惊喜连连. 本次峰会将是国内最大的互联网营销培训大会 据了解,世界互联网峰会(World I

《HTML5移动Web开发实战》—— 1.4 BlackBerry仿真器

1.4 BlackBerry仿真器 HTML5移动Web开发实战适用浏览器:BlackBerry 大部分的移动设备仿真器,都可以很容易地根据其官方网站的介绍来安装和配置,但BlackBerry仿真器的工作方式与其他仿真器不同.从Blackberry仿真器连接互联网,除了下载仿真器还需要下载安装BlackBerry Email and MDS Services Simulator. 1.4.1 准备 确认你从以下地址下载了仿真器: http://us.blackberry.com/develope

淘米网程云鹏:淘米互联网营销新阶段

8月1日起,文化部<网游管理暂行办法>开始实施,对于互联网游戏的监管将继续强化,保护未成年人成为其中重点.对于儿童社区游戏企业而言,其受关注度也随之攀升. 如何在政策监管架构下,为7到14岁的儿童提供更多的健康娱乐方式?淘米网 首席运营官程云鹏表示,作为针对儿童市场的互联网企业,责任感自然是最重的. "我们是让孩子喜欢,妈妈放心:前者是第一位的,而后者是基础",程云鹏再次强调淘米对公众反复作出的这句承诺.淘米网此前被纳入了文化部针对SNS社区保护未成年人的试点中. <

实战网络营销之:企业网络营销赚钱法则

实战网络营销之:企业网络营销赚钱法则 一.企业网络营销赚钱法则培训对象:传统企业:企业网络营销赚钱法则可以帮你降低营销成本,快速获得更多的客户.网络公司:学习企业网络营销赚钱法则,可以帮助你的公司增加新的赢利点.毕业学生:学习企业网络营销赚钱法则,自己创业赚钱,找工作也会更容易. 二.课程主要内容:企业网络营销中存在的问题: 企业网络营销策略: 网站内容及传播策略: 在线成交方法: 网站推广十三招: 搜索引擎营销专题: 网络免费资源运用: 整合网络营销. 三.课程收益: 1.  全面了解和掌握企

《树莓派开发实战(第2版)》——第2章 网络连接

第2章 网络连接 树莓派开发实战(第2版) 2.0 引言 树莓派在设计之初,便是要连接到互联网的.互联网通信是它的关键功能之一,这给其他各种用途铺平了道路,例如家庭自动化.Web服务.网络监控等. 树莓派既可以使用以太网线缆(这种情况至少要求是B型树莓派)联网,也可以使用USB Wi-Fi无线网卡连接网络.树莓派一旦连接到互联网上面,就意味着你可以通过其他计算机来远程连接树莓派.这对于本身难以接近,或者没有连接键盘.鼠标和显示器的树莓派来说,是非常有用的. 接下来,本章将详细介绍树莓派连接互联网

互联网创业六大经典创业理论,互联网营销

1. 鞋厂理论 世界上有无数家鞋厂,制造着各自的鞋子,销售给各自的客户. 在网络上,当某个生意已经有人在做的时候,就想想皮鞋理论,你会发现:在大多数情况下,即使有很多人在做鞋子,也并不意味着你就不能再去做鞋子了,别人做了耐克,你可以做李宁,不行就做安踏啥的,即使不知名的杂牌也在三线城市卖的不错. 如果其他的鞋厂都在赚钱,那么你也有机会在这个市场里分一杯羹:如果其他鞋厂都在亏钱,那么你要想办法把他们亏掉的钱赚到自己手上.把成本.产品.服务.渠道.营销都做好,你就有机会超过现有的竞争对手.赚钱的生意

微信公众平台教程,注册申请、认证、开发、推广营销,教你怎么用微信公众号

微信公众平台教程 微信公众平台上至少有580多万公众号,8亿的微信用户参与其中,如此聚宝盆如何挖掘呢?本微信公众平台教程,以ytkah自己的使用体会教你怎么用微信公众号,包括微信公众平台注册申请.认证.开发.推广营销.成功案例,公众平台消息导出,关注用户备份,图文消息排版美化,图片尺寸,微信菜单设置,使用技巧等   教程目录 微信公众平台分类 微信公众平台注册,微信公众平台申请 微信公众平台登录 微信公众平台认证 微信公众平台开发 微信公众平台推广,微信公众平台营销   微信公众平台分类 服务号