目录
- 网络模型
- 常见接口协议
- HTTP 协议详解
- Restful 架构
网络模型
常见接口协议
RPC 协议
- RPC(Remote Procedure Call)
- 以本地代码调用的方式实现远程执行
- 主要用于公司内部的服务调用
- 优点:传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力
- 常见的 RPC 协议
- Dubbo:Java 基础之上的高性能 RPC 协议
- gRPC:高性能通用 RPC 框架,基于 Protocol Buffers。PB 是一个语言中立、平台中立的数据序列化框架
- Thrift:与 gRPC 类似的多语言 RPC 框架
HTTP 协议
- 请求
- 请求行:method url protocol
- 请求方法:GET、POST、PUT、DELETE、HEAD
- 请求头: Host Cookie User-Agent
- 请求参数 query
- 请求体:JSON XML FORM
- 响应:
- 响应状态行
- 响应头
- 响应体
URI 和 URL
- URI,统一资源标识符,用来唯一的标识一个资源。
- URL,统一资源定位符,它是一种具体的 URI
- URL 结构:
https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1
- 协议:
http
- 域名:
www.baidu.com
- 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
- 路径:
/s
- 请求参数:
wd=霍格沃兹&rsv_spt=**1
- 协议:
HTTP 请求报文
> GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
> Host: ceshiren.com
> Accept-Encoding: deflate, gzip
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
> User-Agent: Mozilla/5.0
(Macintosh; Intel Mac OS X 10_15_0)
AppleWebKit/537.36
(KHTML, like Gecko)
Chrome/80.0.3987.116 Safari/537.36
> Accept: image/webp,image/apng,image/*,*/*;q=0.8
> Referer: https://ceshiren.com/
> Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
> Cookie: user_id=xx;
_homeland_session=xx;
>
HTTP 响应报文
< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Connection: keep-alive
HTTP 响应状态码
- 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
- 2xx 表示成功,接受或知道了
- 200 成功
- 3xx 表示重定向,要完成请求还必须才去进一步的行动
- 301 永久移动
- 302 临时移动
- 4xx 表示客户端请求错误
- 403 未授权
- 404 未找到
- 5xx 表示服务端错误
- 500 服务器内部错误
- 503 服务不可用
RESTful 架构
- Restful:Representational State Transfer
- 借助于 HTTP 协议的基本请求方法代表资源的状态切换
- GET:获取资源
- POST:新增或者更新
- PUT:更新资源
- DELETE:删除资源