restful
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备)因此,必须有一种统一的机制,对请求头和响应头进行规范,方便不同的前端设备与后端进行通信。
http和https
在应用层是一样的,都是http协议,https在tcp层进行加密。
https
请求和响应过程
# 在终端输入
curl https://testerhome.com/api/v3/topics.json?limit=3 -vvv # -vvv显示具体信息
结果如下图(请求头中必须包含请求方式、资源位置和Host,即下图Get行和Host行):
跨域(cors)
协议不同 http://www.baidu.com https://www.baidu.com
二级域名不同 http://api.baidu.com http://map.baidu.com
域名不同 http://www.baidu.com http://www.xinlang.com
端口不同 http://www.baidu.com:80 与 http://www.baidu.com:81端口
浏览器默认允许get、post、head请求方式,跨域请求时,如果要使用这些方式之外的请求,需要使用option预请求确认浏览器支持哪些请求方式
content-type
请求头中
告诉服务器传的什么格式,常见的有
- application/json
- multipart/form-data
- application/x-www-form-urlencoded
- text/plain
cookie和session
sever->set cookie->cookie->request with cookie
http是无状态的,所以需要有东西来标示每个用户,session是保存在服务端的标示用户信息的数据,cookies是sever端返回数据时通过set cookie以键值对保存在客户端的的信息,之后的同域请求会自动在header中携带cookie数据,cookie会对应服务端的一个session值,从而识别用户。cookie可以通过sever端控制有效时间,会过期,session是永久的。
重定向
当请求的资源被移动到其他地方时,服务器会进行重定向。为什么需要做重定向,因为资源的变动对于用户而言是无感知的,如果不做重定向,用户还是访问原来的网址,但原来的位置资源已经不存在,就会出现404。
302是临时重定向。临时重定向时,用户的一次操作会发生两次请求,先请求原来的资源地址,服务器再进行重定向到新地址。301是永久重定向,永久重定向时,用户第一次访问时,进行两次请求(和302一样),之后只会发送一次请求,直接请求新地址的资源。永久重定向后,资源会被缓存在本地磁盘。
常见问题
常见的返回内容类型
text/html HTML格式
application/xml XML数据格式
application/json JSON数据格式
image/jpeg 图片格式
get和post区别?
1.发送数据方式不同,GET的参数拼在url中,POST的参数在request Body中
2.get是幂等操作,任意多次执行对资源本身所产生的影响均与一次执行的影响相同 ?????????
打开一个网站会发生什么?
- 拿到URL
- 去DNS查询IP
- 根据IP与服务器建立TCP连接(三次握手)
- 在tcp连接之上,发送请求信息,获取相应的资源(四次挥手)
- 返回浏览器
常见的http状态码?
200~300 成功响应
300~400 重定向
400~500 客户端响应
400 语义或请求参数有误,服务器无法理解,除非进行修改,否则客户端不应该重复提交这个请求(例如: post请求的request body中key或value有误)
404 请求资源找不到(请求所希望得到的资源未被在服务器上发现)
500往上 服务端响应
502 此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应
自动化测试用例需要注意哪些方面?
1.业务上关注覆盖了哪些业务 业务的重要性分级
2.用例方面,关注稳定性和可维护性
3.结果上要有清晰的log 断言 持续集成 和报警通知
http请求头中常见的字段?
POST GET 资源路径 协议版本
Host
cookie
Connection
content-type
Accpet