RESTful API详解

REST定义了6个架构约束,它们构成了任何Web服务 - 一个真正的RESTful API。

统一接口
客户端服务器
无状态
可缓存
分层系统
按需代码(可选)

统一界面
由于约束名称本身适用,您必须为系统内部的资源决定API接口,这些资源暴露给API消费者并且遵循宗教信仰。系统中的资源应该只有一个逻辑URI,并且应该提供获取相关或附加数据的方法。将资源与网页同步化总是更好。

任何单个资源都不应该太大,并且在其表示中包含每个和所有内容。只要相关,资源应包含指向相对URI的链接(HATEOAS)以获取相关信息。

此外,跨系统的资源表示应遵循某些指导原则,如命名约定,链接格式或数据格式(xml或/和json)。

所有资源都应该通过HTTP GET等通用方法访问,并使用一致的方法进行类似修改。

一旦开发人员熟悉了您的某个API,他就应该能够对其他API采用类似的方法。

客户端服务器
这实质上意味着客户端应用程序和服务器应用程序必须能够单独进化而不相互依赖。客户端应该只知道资源URI,这就是全部。今天,这是Web开发中的常规做法,因此您无需花费任何精力。把事情简单化。

服务器和客户端也可以独立替换和开发,只要它们之间的接口不被改变即可。

无状态
Roy fielding从HTTP获得灵感,因此它反映了这种约束。使所有客户端 - 服务器交互无状态。服务器不会存储有关最新HTTP请求客户端的任何内容。它会将每个请求视为新的。没有会话,没有历史。

如果客户端应用程序需要是最终用户的有状态应用程序,用户登录一次并在此后执行其他授权操作,则客户端的每个请求都应包含服务请求所需的所有信息 - 包括身份验证和授权详细信息。

请求之间不应在服务器上存储客户端上下文。客户端负责管理应用程序的状态。

可缓存
在当今世界,数据和响应的缓存在任何适用/可能的地方都至关重要。您在此处阅读的网页也是HTML页面的缓存版本。缓存为客户端带来性能改进,并为服务器提供更好的可扩展性范围,因为负载已经减少。

在REST中,缓存应在适用时应用于资源,然后这些资源必须声明自己可缓存。缓存可以在服务器或客户端实现。

管理良好的缓存部分或完全消除了一些客户端 - 服务器交互,进一步提高了可伸缩性和性能。

分层系统
REST允许您使用分层系统体系结构,在服务器A上部署API,并在服务器B上存储数据,并在服务器C中验证请求。客户端通常无法判断它是直接连接到终端服务器,还是沿途的中介。

按需编码(可选)
好吧,这个约束是可选的。大多数情况下,您将以XML或JSON的形式发送资源的静态表示。但是当您需要时,您可以自由地return executable code支持您的应用程序的一部分,例如客户可以调用您的API来获取UI小部件呈现代码。这是允许的。

以上所有限制都有助于您构建真正的RESTful API,您应该遵循它们。尽管如此,有时您可能会发现自己违反了一两个限制因素。别担心,你仍在制作一个RESTful API - 但不是“真正的RESTful”。

分配HTTP方法:
创建或者配置:POST
删:DELETE
改:PUT
查:GET

创建模型URI
现在,当对象模型准备就绪时,是时候决定资源URI了。在此步骤中,在设计资源URI时 - 关注资源与其子资源之间的关系。这些资源URI是RESTful服务的端点。

在我们的应用程序中,设备是顶级资源。并且配置是设备下的子资源。让我们写下URI。

/devices

/devices/{id}

/configurations

/configurations/{id}

/devices/{id}/configurations

/devices/{id}/configurations/{id}

单个设备下的配置资源收集
此配置资源集合将是主要配置集合的子集,并且仅特定于设备。由于它是主要集合的子集,因此请勿创建与主集合不同的表示数据字段。使用相同的表示字段作为主集合。

<configurations size="2">
    <link rel="self" href="/devices/12345/configurations" />

    <configuration id="53324">
        <link rel="self" href="/devices/12345/configurations/53324" />
        <link rel="detail" href="/configurations/53324" />
    </configuration>

    <configuration id="333443">
        <link rel="self" href="/devices/12345/configurations/333443" />
        <link rel="detail" href="/configurations/333443" />
    </configuration>
</configurations>

如果想了解更多,(http://restful.p2hp.com/)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值