http基础学习笔记

目录

  • 前言
  • http概念
  • 工作方式
  • URL
  • 请求方法
  • 状态码
  • Header

前言

本篇文章主要是记录自己复习http相关的知识点,为后续学习Retrofit打基础,简单记录一些零碎的点,以免忘记。

http概念

http是一种超文本的传输协议,是为了传输HTML语言的内容。位于TCP/IP协议族的顶层。

工作方式

http的工作方式一般是这样的:

浏览器

执行流程

  • 在浏览器输入链接或者是点击某一个链接
  • 浏览会把链接上的信息拼接好发送服务器
  • 服务器收到以后,进行处理,把处理好的数据返回给浏览器
  • 服务器拿到响应的数据,进行页面的渲染
  • 流程结束

手机

执行流程

  • 在手机上进入某个界面或者点击某一个按钮
  • 手机软件上的相关代码会带着http报文的信息发送到服务器
  • 服务器进行处理,然后返回给手机
  • 手机在收到响应的数据后,进行页面的渲染或者其他操作

URL

先说URL的格式:

URL格式

URL有三部分组成:
我们拿https://nicholasyg.github.io/categories/这个链接来举例子:

其中https为协议类型;nicholasyg.github.io为服务器地址;categories为路径。

http

通俗点说:

  • 协议类型:就是我们用http或者https
  • 服务器地址(:端口号):用来发给目标服务器的
  • 路径:这是给服务看,用来查找我们想要的内容

请求方法

  • GET 获取服务器端的资源,对服务端的内容不做修改,不发送Body

  • POST ⽤于增加或修改资源,发送给服务器的内容写在 Body ⾥⾯

  • PUT 用于修改服务器的资源,发送给服务器的内容写在 Body ⾥⾯

  • DELETE 用于删除服务器的某个资源 不发送Body

状态码

  • 1开头 表示的是临时性消息,比如 100表示继续发送
  • 2开头 这个见得比较多,200 就是成功
  • 3开头 表示重定向,比如 304 表示内容未改变
  • 4开头 表示的一般是指客户端错误,都是可以修改的 比如404 地址找不到
  • 5开头 表示的是服务器错误 常见的有 500 服务器异常

Header

header中的内容,一般是指的请求或响应数据的描述,比如Body有多长,传输的是什么类型等等这些信息,可以称为数据的元数据,下面具体介绍常用的:

Host

目标主机

注意:这个host并不是用来找服务器的,而是用来定位子服务器。比如我现在有一个https://www.gbs.com/android的网址,我想要去访问它,把它拼接好放在浏览器中,在发出请求之前,浏览器会拿着中间的域名,通过DNS去域名库中查找这一个域名,找到它所对应的IP地址服务器,然后把Host当作信息的一部分发送给对应的IP地址服务器,可能这个IP地址对应的服务器有好多个子服务器,绑定了很多个域名,这时候服务器就可以通过这个Host找到对应的域名,在这个对应的域名上查找信息返回。

Content-Type

指定Body的类型,主要有4种:

text/html

  • 请求 Web ⻚页⾯是返回响应的类型,Body 中返回 html ⽂本

x-www-form-urlencoded

  • Web ⻚页⾯纯⽂本表单的提交⽅式

multitype/form-data

  • Web ⻚页⾯含有⼆进制⽂件时的提交⽅式

application/json , image/jpeg , application/zip …

  • 单项内容(⽂本或⾮⽂本都可以),⽤于 Web Api 的响应或者 POST / PUT 的请求

Content-Length

指定Body的字节长度

Location

指定重定向的⽬标 URL

User-Agent

用户代理

-------------The End-------------