Post与Get方法初探以及Restful接口测试

本文详细介绍了RESTful API的设计理念,包括资源、表现形式和状态转移的概念,并通过Spring MVC示例展示了如何实现RESTful风格的服务。同时,文章还讨论了GET与POST请求的区别及其应用场景,以及如何使用常见工具测试RESTful接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

       REST – REpresentational State Transfer首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer。通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:
       Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
       Representational:某种表现形式,比如用JSON,XML,JPEG等;
       State Transfer:状态变化。通过HTTP动词实现。
Restful风格主要意思如下:
1. 每一个URI代表一种资源;
2. 客户端和服务器之间,传递这种资源的某种表现层;
3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

       具体的对应到我们web开发中,springmvc的表现层框架的注解开发即可完美的契合到restful风格。如下就是restful风格的注解。因为是get方法,前端通过访问/api/vms/id 这个url即可获得对应id的vminfo信息。/api/vms/123456,即返回到前端的是id为123456的的vminfo。

@Controller
@RequestMapping("/api/vms")
public class vmapi {
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getvm(){
    return vminfo;
}
}

如何测试Restful接口

       javaweb工作中有时候会有对后端Restful接口在对接前端之前的数据检测阶段,这时就需要对url形式的Restful进行测试。

post请求与get请求解析

       其中针对javaweb开发中后端通过http协议传递到前端数据的方式分为get,post,patch等。不同的方式数据传递也不一样,get方法的作用一般用来获取服务器端资源信息,如同查询数据库一样,不会影响到资源自身状态;而相对于get方法,post方法就提供了更强大的功能,除了能获取服务器资源以外,还能向服务器上传或是修改数据。虽然get方法也可以用来向服务器上传数据,但是一般不采用get方式,而是推荐使用post方法上传数据。因为采用get方式与服务器交互(上传数据)时,一般将数据添加至URL后面,即url后加“?”然后是变量名以及数据内容,多个变量之间使用“&”连接,如:https://11.1.1.111/api/vms/net/123?page=2&per_page=10。而post方法则是将数据通过http请求的附件形式隐式的进行传输。这样就凸显出了两个问题:
       1. get请求暴露出所有与服务器交互的数据内容,不安全。
       2. get请求使用url形式,url有长度限制。
       因此我们通常选用post请求向服务器上传和修改数据,而且一些需要加密的获取服务器资源的请求也需要通过post请求发出,那么post请求这么万能,我们为什么不都采用post请求呢?
       因为post请求和get请求所表达的语义不一样,主干网络可以对其做不同的处理,get请求所表达出来的语义是一种只读的纯粹的操作,仅仅是对服务器资源的一种读取操作(无副作用),不会改变服务器资源,因此大部分get请求都被CDN缓存了,这样就会减少真正的web服务器很大的压力;但post请求所表达出来的语义是有副作用的操作,所以所有的请求都会发送到web服务器处理。这样一来,若是将所有的get请求换成post请求,那就意味着cdn就完全没有任何存在的意义,web服务器处理的请求便会成倍的增加,因此post和get无法相互取代。
       CDN技术: CDN主要功能是在不同的地点缓存内容,通过负载均衡技术,将用户的请求定向到最合适的缓存服务器上去获取内容,比如说,是北京的用户,我们让他访问北京的节点,深圳的用户,我们让他访问深圳的节点。通过就近访问,加速用户对网站的访问。解决Internet网络拥堵状况,提高用户访问网络的响应速度。

测试接口

       get方式的接口直接通过url补全参数即可,如https://11.1.1.111/api/vms/net/123?page=2&per_page=10,参数对应注解中的同名参数,然后通过浏览器输入之后回车,即可看到服务器返回的数据,一般为json格式数据。
       post接口就需要工具测试了,因为通过http附件形式传递的数据内容,无法通过输入url直接模拟请求,需要浏览器的小插件。列举firefox浏览器的HttpRequester插件。一个springmvc注解方法如下:
       @RequestMapping(value = “/addVm”, method = RequestMethod.POST)
       public @ResponseBody String addVm(@RequestBody List vmHostlist, HttpServletRequest request)
       其中 @RequestBody List vmHostlist 就是前端需要向服务器端传递封装的数据,使用json字符串封装,list对象,在工具中的content中填充json字符串内容。然后选择发送的方式——post即可收到response返回结果。

周次模块上午(10:00-12:00)下午(14:00-18:00)实战项目/作业 上午(10:00-12:00) 下午(14:00-18:00) 实战项目/作业 1 Python基础 Python语法基础:变量、数据类型、流程控制 函数、模块、异常处理;文件操作(JSON/CSV) 编写一个文件处理工具,支持JSON/CSV转换 2 Python进阶 面向对象编程:类、继承、多态 常用库:requests, logging, unittest;单元测试实践 实现一个支持日志记录的API请求工具 3 Python测试库 Pytest框架入门:用例编写、断言、夹具 参数测试、Allure报告生成;Mock技术 为API工具编写Pytest测试用例并生成报告 4 UI自动化 Selenium基础:元素定位、页面操作 Page Object模式;Pytest集成Selenium 网站登录、搜索功能自动化 5 接口自动化 Requests深度使用:HTTP协议、会话管理 接口测试框架设计:封装请求、数据驱动 搭建接口测试框架,实现登录接口测试 6 接口高级实战 接口安全:OAuth2.0;接口依赖处理 Mock服务(使用Python库);持续集成(GitHub Actions) 实现带Token验证的接口测试 7 接口性能一体化 接口性能测试基础:Locust核心概念 编写Locust性能测试脚本;分布式压测 对接口进行压力测试并生成报告 8 性能测试 性能监控分析:资源监控、结果分析 性能调优实战;LocustPrometheus集成 分析性能瓶颈并优化 9 测试开发(上) 测试框架优化:插件机制、配置管理 测试报告定制:Allure二次开发;钉钉/邮件通知 开发一个带通知功能的测试报告插件 10 测试开发(下) 测试工具链:Docker化测试环境 低代码测试平台初探测试数据工厂设计 构建一个测试用例管理平台原型 我这是给0基础的测试同学,的课程内容,但是现在课程要变成12节课,所以得修改下,另外上面的课程10需要改掉,现在这个没懂啥意思,可以构建一个测试用例管理平台没错,但是没看出和10 节课教的东西有什么关联
最新发布
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值