Http学习笔记


一、面试题

1、HTTP/1.0和HTTP/1.1有什么区别?

参考https://www.cnblogs.com/loren-Yang/p/7490011.html
https://pythonjishu.com/vuboqpkalikqgml/

长连接和管道机制

  • HTTP/1.0每次请求都需要重新建立连接,效率低
  • HTTP/1.1支持长连接和管道化技术,即在同一个连接上可以发送多个请求,避免重复建立和断开连接的开销,提高了传输效率

Host字段

状态码

  • HTTP/1.1引入了新状态码100(Continue),用来确认服务端是否能收到请求(节约了带宽,因为如果不确定服务器是否能收到请求,那贸然发送带实体的请求,如果被拒绝就会浪费带宽,所以在正士请求前发送一个只带100Continue的请求

方法

  • HTTP/1.0支持:GET、POST、HEAD
  • HTTP/1.1新增:PUT、DELETE、OPTIONS、TRACE、CONNECT

2、http用哪几种方法?

  • GET:请求指定的页面信息,并返回实体本体(暴露在地址栏URL中)
  • POST:向指定资源提交要被处理的数据,并返回处理后的结果(一般用于提交表单等较隐私数据)
  • PUT:更新指定资源
  • DELETE:删除指定资源
  • HEAD:类似GET请求,不过返回响应中没有具体的内容,用于获取资源的元信息
  • OPTIONS:返回服务器支持的HTTP方法
  • TRACE:回显服务器收到的请求,主要用于测试或诊断(可以回显当前请求头等信息,用于检查请求是否被修改)
  • CONNECT:HTTP/1.1协议中预留能够将连接改为管道方式的代理服务器

3、http有哪些状态码?

  • 1xx(信息性状态码):表示请求已被接受并继续处理
    • 100(继续):表示服务器已经接收到请求头,并且客户端应该继续发送请求头(通常用于POST请求)
    • 101(切换协议):…
  • 2xx(成功状态码):表示请求已成功被服务器理解并接受
    • 200(成功):表示请求已经成功,并且已返回请求的数据
    • 201(已创建):表示请求已被服务器接受,并且资源已被创建
    • 204(无内容):表示请求已经成功,但是没有返回任何内容
  • 3xx(重定向状态码):表示需要客户端采取进一步操作才能完成请求
    • 301(永久移动)
    • 302(临时移动)
    • 304(未修改):表示所请求的资源在上次访问之后没有被修改过,客户端可以使用缓存的版本
  • 4xx(客户端错误状态码):表示客户端发送的请求错误
    • 400(客户端错误请求):表示请求语法或参数有问题,服务器无法处理
    • 401(未授权):表示请求需要身份验证
    • 403(禁止访问):表示服务器拒绝请求
  • 5xx(服务器错误状态码):表示服务器在处理请求时发生了错误
    • 500(服务器内部错误)
    • 502(错误网关):表示服务器作为网关或代理,从上游服务器收到的响应无效
    • 503(服务不可用):表示服务器暂时无法处理请求(可能是由于过载或维护等原因

二、常见问题

1.参数值传yyyy-MM-dd报错(400)

解决方案:改成yyyy/MM/dd
Http接口传时间格式错误
Http接口传时间格式正确

2.参数值直接传json报错(400)

例子:{“id”:3,”name”:”gary”}
原因:Http Get和Post请求不能传包含{}等这类特殊字符
解决方案:需要对特殊字符进行转义,如"转成%22,{转成%7b
在线转义http://www.jsons.cn/urlencode/
Http接口参数转义


文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录