RESTFUL

API

REST(Representational Status Transfer) 一种软件设计风格,采用http协议,json数据格式

特点:

       统一接口(Uniform Interface)

       无状态(stateless)

       可缓存(Cacheable)

       分层(Layered System)

       CS模式(client-server Atchitecture)

设计原则

       以URL(统一资源定位符)风格设计API

       通过不同的METHOD(GET,POST,PUT,DELETE)来区分资源的CRUD(增删改查)

       返回码(Status Code)必须符合HTTP资源描述规定

方法

安全

幂等

GET

YES

NO

HEAD

YES

NO

OPTIONS

YES

NO

PUT

NO

YES

DELETE

NO

YES

POST

NO

NO

HTTP——可见性——保证一下可能正常工作

        缓存:缓存响应内容,并在资源修改时使缓存自动失效

        乐观并发控制:检测并发写入,并在操作过期的表述时防止资源发生变更

        内容协商: 在给定资源的多个可用表述中选择合适的表述

        安全性和幂等性:确保客户端可以重复或重试特定的HTTP请求

怎么实现可见性:

        交互无状态     使用一个统一接口    编码格式明确区分标头和内容

怎么保持可见性:

        语以要与HTTP所规定的语义保持一致,并添加适当的标头来描述请求和响应

        使用适当的状态码和状态消息,以便处理、缓存和客户端可以决定请求的结果

内容协商

       HTTP 服务器驱动(server-driver)协商 <- 请求头选择

                  代理驱动(agent-driver)协商 <-不同URI

       客户端偏好

                  Accept头——设置偏好媒体类型

                  Accept-Language——设置偏好语言

                  Accept-Charset——设置偏好字符编码

                  Accept-Encoding——设置偏好压缩格式 

       服务器偏好

                例如:

#针对英语表述的请求
GET /status HTTP/1.1
Host: www.example.org
Accept-Language:en;q=1.0,*/*;q=0.0

#响应
HTTP/1.1 200 OK
Content-Language:en
Vary: Accept-Language


#针对中文表述的请求
GET /status HTTP/1.1
Host: www.example.org
Accept-Language: zh;q=1.0,*/*;q=0.0 

#响应
HTTP/1.1 200 OK
Content-Language:zh
Vary: Accept-Language

//保持请求URI不变,客户端及中间媒介可以根据Vary头中所列出的请求头的值来区分响应

安全性:客户端可以发起请求,并指导客户端不会改变资源的状态,无副作用

              任何客户端都可以发起任意次数的GET、OPTIONS、HEAD请求

幂等性:保证客户端重复发起某个请求的效果与一次请求的效果一致

               保证客户端可以在不能肯定服务器是否成功处理了请求时,重复发起这一请求

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值