RESTful、HTTP

62 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

RESTful

【大厂面试】面试官:你连RESTful都不知道我怎么敢要你?

用大白话来说,就是通过URL就知道要什么资源,通过HTTP method就知道要干什么,通过HTTP status code就知道结果如何

 # 举个例子
 GET /tasks 获取所有任务
 POST/tasks创建新任务
 GET/tasks/{id}通过任务id获取任务
 PUT/tasks/{id}更新任务
 DELETE/tasks/{id}删除任务
 
 GET代表获取一个资源,
 POST代表添加一个资源,
 PUT代表修改一个资源,
 DELETE代表删除个资源。
 ​
 server提供的RESTful API中URL中只使用名词来指定资源, 原则上不使用动词。
 ​
 用HTTP Status Code传递server的状态信息。比如最常用的 200表示成功,500表示Server内部错误等。
 ​
 # 优势
 风格统一
 面向资源一目了然
 充分利用HTTP协议本身语义
 ​

HTTP

【对线面试官】腾讯面试,你真的懂HTTP吗?

面试官:看你简历上写了熟悉HTTP,什么是HTTP?

HTTP协议是Hyper TextTransfer Protocol (超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。

协议就是双方约定好的格式,确保双方都能理解这种格式。

那HTTP协议有什么特点呢?

  • HTTP允许传输任意类型的数据。传输的类型由Content-Type加以标记。
  • 无状态。对于客户端每次发送的请求,服务器都认为是一个新的请求, 上一次会话和下一次会话之间没有联系。
  • 支持客户端/服务器模式。

你知道HTTP长连接吗?

经典面试题!早就背的滚瓜烂熟了!

HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗

HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

HTTP1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive才能支持长连接

嗯, 刚刚有提到HTTP1.0和HTTP1.1, 那你知道HTTP1.1和HTTP2.0的区别吗?

HTTP2.0相比HTTP1.1支持的特性如下:

  • 新的二进制格式:HTTP1.1基于文本格式传输数据;HTTP2.0采用二进制格式传输数据,解析更高效。

  • 多路复用:在一个连接里, 允许同时发送多个请求或响应,并且这些请求或响应能够并行的传输而不被阻塞。

  • 头部压缩:HTTP1.1的header带有大量信息,而且每次都要重复发送; HTTP2.0把header从数据中分离,并封装成头帧和数据帧,使用特定算法压缩头帧,有效减少头信息大小。

    • 并且HTTP2.0在客户端和服务器端记录了之前发送的键值对,又对于相同的数据,不会重复发送。
    • 比如请求a发送了所有的头信息字段,请求b则只需要发送差异数据,这样可以减少冗余数据,降低开销。

不错不错!再问一个,你觉得HTTP通信安全吗?

裸奔能安全吗

HTTP是明文传输,容易被黑客窃听或篡改, 不安全

可以使用HTTPS来解决HTTP明文协议的缺陷,在 HTTP 的基础上加入SSL/TLS协议,依靠SSL 证书来验证服务器的身份,为客户端和服务

器端之间建立SSL通道, 确保数据传输安全