一、请求
1、URL
URL地址:http://127.0.0.1:8080/docs/
一个url就是一个接口
http://域名/请求路径,默认端口号:80
域名:会被DNS服务器解析为ip地址
域名:对ip地址进行转换,在请求的时候会将域名转换为ip地址发起请求
https://域名/请求路径:https://i-beta.cnblogs.com/posts/edit,默认端口:443
2、结构:
请求首行(请求行)
请求头(消息报头)
请求体(请求正文)
3、请求首行(请求行)
1、请求方法:get
获取服务器资源(取回数据)
对应sql语句中的select
没有请求体
请求参数(query string查询字符串)放在url中以?key1=value1&key2=value2的形式
查询字符串参数
不要在处理敏感数据的时候使用(数据放在url上)
2、请求方法:post
往往创建(新增)资源
对应sql语句中的insert into
有请求体:用来传参数的
请求参数:
url上查询字符串参数(请求头中)
请求体中的参数(请求体中)
body参数方式 Content-Type
Text text/plain
Form application/x-www-form-urlencoded
JSON application/json
File 不确定
text/plain:文本传输为HTTP的报文体中是纯文本,没有任何格式和修饰,服务器就会拿走文本自己处理
Form:表单形式传递参数,这个是最常用的传递参数的方式,HTML中都有form标签与其对应,
其本身采用Key-value的方式传递参数
Json格式比Form更加有效的地方是可以传递Object;
File传递单个文件
根据Content-type不同,服务器去读取HTTP Body中的参数的方式也不一样
3、请求方法:put
修改服务器的资源
对应sql语句中的update
有请求体,有参数
4、请求方法:delete
删除服务器的资源
对应sql语句中的delete from
有请求体,有参数
请求地址:
协议版本号:
HTTP:1.1
5、请求头(消息报头):
User-Agent(客户端类型)
游览器
手机
cookie
用户的非铭感信息
二、响应
1、结构
响应首行(状态行)
响应头(消息报头)
响应体(响应实体)
2、响应首行(状态行)
协议版本号
响应的状态码
常见状态码大类:
1xx:信息,啥都不用做,知道就好
2xx:成功,啥都不用做,知道就好
3xx:重定向,重新请求返回新地址->才能获取真正需要的数据
4xx:客户端的错误,确保用正确的参数和信息正确,重新请求
5xx:服务器端的错误,一般都无需啥操作
最常用状态码及含义:
Successful - 2xx:成功类,行为被成功地接受,理解和采纳
200OK
服务器成功返回用户请求的数据
往往为了简化处理
POST创建成功后应该返回201的
301:永久重定向,将请求永久进行转移到第三方
302:临时重定向,将请求临时进行转移到第三方
401:没有权限
404 NOT FOUND:找不到资源
405:方法不允许,权限不够
500:服务器内部错误
3、响应头(消息报头)
Content-Type:指定返回格式
Set-Cookie:服务器将用户信息(session-id)放到Set-Cookie,然后将其放到Cookie中保存至游览器
4、响应体(响应实体)
响应数据
html页面或者json格式数据
前后不分离和前后端分离开发模式
服务器认证、授权、鉴权
认证:是否登录
授权:登录后可以干嘛,决定权限
session:会话机制,银行系统,cookie + session会同时存在
cookie + session来做认证
cookie 是放在游览器中的
session 是保存在服务端的数据库中的
cookie 和 session 区别:
响应报文中的Set-Cookie当中可以看到sessionid或者serverid
表单登录,通过账号和密码进行登录,大多数都是session认证
token:安全令牌机制,小程序,微服务
jwt token
token是服务器生成的,缓解服务器的压力,对性能会有帮助
游览器收到相应报文之后,会将token放在local storage / session storage
往往会将token放在请求头中
登录后会返回token,保存在会话存储和本地存储当中,存在客户端和游览器当中
Josn:格式数据处理
定义:是一种数据格式,并不是数据类型
使用JavaScript对象表示法
注意事项:
json格式的数据,在python中以字符串形式呈现
json中的空值为null
json中除数字外,所有的key和value都是字符串,且一定要以双引号括起来
使用fiddler进行抓包操作:
抓取接口对应的请求参数:请求方式,URL地址、返回结果