restful

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备)因此,必须有一种统一的机制,对请求头和响应头进行规范,方便不同的前端设备与后端进行通信。

http和https

在应用层是一样的,都是http协议,https在tcp层进行加密。

image.png

image.png

image.png

https

请求和响应过程

  1. # 在终端输入
  2. curl https://testerhome.com/api/v3/topics.json?limit=3 -vvv # -vvv显示具体信息

结果如下图(请求头中必须包含请求方式、资源位置和Host,即下图Get行和Host行):
image.png

跨域(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:80http://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是幂等操作,任意多次执行对资源本身所产生的影响均与一次执行的影响相同 ?????????

打开一个网站会发生什么?
  1. 拿到URL
  2. 去DNS查询IP
  3. 根据IP与服务器建立TCP连接(三次握手)
  4. 在tcp连接之上,发送请求信息,获取相应的资源(四次挥手)
  5. 返回浏览器

常见的http状态码?

200~300 成功响应
300~400 重定向
400~500 客户端响应
400 语义或请求参数有误,服务器无法理解,除非进行修改,否则客户端不应该重复提交这个请求(例如: post请求的request body中key或value有误)
404 请求资源找不到(请求所希望得到的资源未被在服务器上发现)
500往上 服务端响应
502 此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应

自动化测试用例需要注意哪些方面?

1.业务上关注覆盖了哪些业务 业务的重要性分级
2.用例方面,关注稳定性和可维护性
3.结果上要有清晰的log 断言 持续集成 和报警通知

http请求头中常见的字段?
  1. POST GET 资源路径 协议版本
  2. Host
  3. cookie
  4. Connection
  5. content-type
  6. Accpet