zoukankan      html  css  js  c++  java
  • REST Service 基础 A further step.

    1. REST Service虽然实现简单, 但也功能丰富, 可以用来实现各种基于Web的服务(service)。

    2. REST Service的一些特点:

       1)平台无关

       2) 语言无关

       3)基于HTTP标准

       4)即使有防火墙存在的情况下也可以方便使用。


    3. REST 没有提供内建的Security features, encryption, session management, QoS guarantees, etc. 

    但是在提供REST Service的时候,可以使用基于Http之上的安全措施:

    OAuth

    HTTPS

    etc.

    4. REST和SOAP相比的简单之处:

    SOAP的请求信息

    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
     <soap:body pb="http://www.acme.com/phonebook">
      <pb:GetUserDetails>
       <pb:UserID>12345</pb:UserID>
      </pb:GetUserDetails>
     </soap:Body>
    </soap:Envelope>

    通常包含在Envelope之中,这需要我们先解析Envelop中的信息。

    对于SOAP只需要

    http://www.acme.com/phonebook/UserDetails/12345

    REST的一些优势

    • It's easy to see why Web Services are often used with libraries that create the SOAP/HTTP request and send it over, and then parse the SOAP response.
    • With REST, a simple network connection is all you need. You can even test the API directly, using your browser

    一个形象的例子:

    SOAP就好像是邮递信件需要信封将信件wrap起来。

    而是用REST就好像是一个明信片(每次请求是用更少的带宽,因为减少了信封(SOAP的包装信息)), 当然在安全性上可以使用任何加密手段保证安全。


    5. 复杂请求, 前文说到只读信息推荐使用GET请求, 但是对于复杂请求,需要很多参数和信息的情况下 (HTTP协议本身未指定任何对URL长度要求。它只是建议不要超过255个字符), 这种情况下可以使用POST请求来得到资源的Representation。


    6. 不同于SOAP, REST的相应不局限在XML, 可以使用JSON, CSV等其他格式。可以针对不同情况利用这些文档的优势。

    XML更易于扩展。

    CSV具有更好的压缩性。

    JSON更易于Java Script处理。

    HTML推荐作为REST的返回格式,出了在需要Human-Readable的情况下, 大部分情况返回信息是用程序来处理的。


    7. REST的核心架构:

    资源(Resource)

    A web of resources(返回信息不能过大, 必要时使用分页paging),之前做过的一个项目就发生过返回信息过大而time out的情况。

    无连接状态(No Connection state)

    必要时缓存 (使用 Http cache-control Header)

    使用代理服务改善性能。


    8. REST设计纲领:

    1)不要使用物理URL,例如指向具体的问题文件,https://csdn.net/profile.xml

    2) 返回信息不能过大(分页)

    3) 完善返回信息文档(例如返回信息xml的DTD

    4) 返回列表具体resource的URI, https://csdn.net/users

    返回所有用户信息, 例如

    <users>

    <user>https://csdn.net/users/onehao </user>

    .....

    </users>

    5) GET请求不能引起资源(Resource)状态变化。


    9. ROA vs.SOA, REST vs. SOAP

    1) 基于SOAP based的SOA相对于ROA可能有更多成熟的工具的支持。(这种情况可能随着时间的推移而改变)

    2) ROA更易于实现

    3) ROA具有更好的性能, -- 更好的Cache支持, 更轻量级的Request和Response。


    上一篇: REST Service 基础



    Reference:

    http://blog.csdn.net/onehao/article/details/9269819

    http://rest.elkstein.org/

  • 相关阅读:
    JavaScript实现HTML导航栏下拉菜单[悬浮显示]
    Paper Pal:一个中英文论文及其代码大数据搜索平台
    小程序定位地图模块全系列开发教学(超详细)
    简单的个人介绍网页主页面【附代码】
    前端分页功能(通用)
    打造完美写作系统:Gitbook+Github Pages+Github Actions
    移动端布局
    三剑客var,let,const
    包含多个段的程序01 零基础入门学习汇编语言29
    更灵活的定位内存地址的方法01 零基础入门学习汇编语言32
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3180099.html
Copyright © 2011-2022 走看看