首页 > 其他分享 >Restful API 接口测试工具 HTTP Client

Restful API 接口测试工具 HTTP Client

时间:2023-09-21 10:46:19浏览次数:46  
标签:file2 HTTP name -- 接口 put API 测试工具 WebAppBoundary

HTTP Client

软件项目开发有很多 RESTful API 接口需要运行来验证效果,所以急需一款高效的接口测试工具。

可能大家用的比较多的是 swagger 或者 postman,这2个确实不错,不过这里我给大家推荐一种更简单的接口测试工具。

这款工具就是 idea 中的自带的:HTTP Client,这款工具特别好用,主要的优点:

  • 1、若想测试一个接口,只需要几行代码
  • 2、运行特别容易
  • 3、方便切换各种环境

案例

1、创建一个springboot项目

idea 中创建一个 springboot项目,来个 controller,内容如下,模拟了5种常见的情况,基本上包含了我们开发中所有的场景

IndexController.java

@RestController
public class IndexController {
    //get请求
    @RequestMapping("/get")
    public String get() {
        return "get";
    }
    //post请求,模拟表单提交
    @PostMapping("/post")
    public Map<String, String[]> post(HttpServletRequest request) {
        return request.getParameterMap();
    }
    //post请求json数据
    @PostMapping("/body")
    public List<Integer> body(@RequestBody List<Integer> list) {
        return list;
    }
    //put请求
    @PutMapping("/put")
    public String put() {
        return "put";
    }
    //模拟多文件上传,顺便带上表单数据
    @PostMapping("/upload")
    public Map<String, Object> upload(@RequestParam("file1") MultipartFile file1,
                                      @RequestParam("file2") MultipartFile file2,
                                      User user,
                                      HttpServletRequest request) {
        Map<String, Object> result = new HashMap<>();
        result.put("file1.size", file1.getSize());
        result.put("file1.name", file1.getName());
        result.put("file2.originalFilename", file1.getOriginalFilename());
        result.put("file2.size", file2.getSize());
        result.put("file2.name", file2.getName());
        result.put("file2.originalFilename", file2.getOriginalFilename());
        result.put("params", request.getParameterMap());
        result.put("user", user);
        return result;
    }
    static class User {
        private String userName;
        private int age;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
}

image-20220701082913017

启动项目,下面我们来对这几个接口进行测试。

测试上面5个接口

下面我们通过HTTP Client工具来对上面几个接口进测试。

1. 创建 http 后缀的文件

文件必须以http为后缀,这种文件会自动被HTTP Client插件识别,效果如下

image-20220701082937545

2. 将下面内容丢到创建好的文件中
### get 请求
GET http://localhost:8080/get
### post 提交表单
POST http://localhost:8080/post
Content-Type: application/x-www-form-urlencoded
name=张三&age=23
### body 中传递json数据
POST http://localhost:8080/body
Content-Type: application/json
[3,10,40]
### put请求
PUT http://localhost:8080/put
### 多文件上传文件接口测试
POST http://localhost:8080/upload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file1"; filename="pic_1.jpeg"
< C:\Users\Think\Desktop\1.jpeg
--WebAppBoundary--
--WebAppBoundary
Content-Disposition: form-data; name="file2"; filename="pic_2.jpeg"
< C:\Users\Think\Desktop\2.jpeg
--WebAppBoundary--
--WebAppBoundary--
Content-Disposition: form-data;name=userName
tom
--WebAppBoundary--
--WebAppBoundary--
Content-Disposition: form-data;name=age
23
--WebAppBoundary--
###

接口格式很简单,如下

请求方式 地址
header部分,key=value格式,每个一行
参数部分(注意这个上面要有个空行)

此时文件的效果是下面这样,点击红框中的按钮,即可以运行这个测试用例

image-20220701082959473

3. 运行接口

image-20220701083015000

http文件内容如何写?

HTTP Client 提供了很多案例,点击 Examples案例可以看到各种请求案例,这里就不细说了,大家一看就懂。

image-20220701083027604

文件上传的写法

多文件上传且携带表单数据,这个比较特别,下面是接口代码

//模拟多文件上传,顺便带上表单数据
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file1") MultipartFile file1,
                                  @RequestParam("file2") MultipartFile file2,
                                  User user,
                                  HttpServletRequest request) {
}

对应的HTTP Client的写法如下:

### 多文件上传文件接口测试
POST http://localhost:8080/upload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file1"; filename="pic_1.jpeg"
< C:\Users\Think\Desktop\1.jpeg
--WebAppBoundary--
--WebAppBoundary
Content-Disposition: form-data; name="file2"; filename="pic_2.jpeg"
< C:\Users\Think\Desktop\2.jpeg
--WebAppBoundary--
--WebAppBoundary--
Content-Disposition: form-data;name=userName
tom
--WebAppBoundary--
--WebAppBoundary--
Content-Disposition: form-data;name=age
23
--WebAppBoundary--
###

你可以把这个请求想象为页面中的一个表单,表单有4个元素:2个File元素,用来选择需要上传的2个文件,2个输入框,分别用来输入userName和age,用—WebAppBoundary来隔离每个元素,如果有多个元素,都需要用—WebAppBoundary隔离开来,如下:

image-20220701083046849

环境切换

我们测试接口的时候,有开发环境、测试环境、UAT环境,生产环境,每个环境的接口信息都不一样,比如接口地址。

HTTP Client 中可以创建环境配置文件,来对不同的环境信息进行配置,操作如下

1. 创建环境配置文件

image-20220701083120946

生成了一个环境配置文件,如下

image-20220701083133523

文件内容格式

{
  "环境名称": {环境参数json格式},
  "环境名称": {环境参数json格式}
}

举例

{
  "dev": {
    "url": "http://localhost:8080",
    "name": "张三"
  },
  "test": {
    "url": "http://localhost:9090",
    "name": "李四"
  }
}
2. http文件中引用环境配置信息

通过{{key}}可以引用环境中的信息,运行的时候会被替换,如:

GET {{url}}/get
3. 运行的时候选择环境

运行的时候会提示你选择环境,此时环境中的配置信息就被用上了

image-20220701083150160

标签:file2,HTTP,name,--,接口,put,API,测试工具,WebAppBoundary
From: https://www.cnblogs.com/binbingg/p/17719315.html

相关文章

  • 在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点
    目录饮食数据创建节点根据疾病、症状,判断出哪些饮食不能吃,哪些建议多吃饮食数据foods_data.csv建议值用“”引起来。避免中间有,号造成误识别饮食"辣椒""大蒜""芥末""海鲜""胡萝卜""核桃仁""菠菜""西红柿""香蕉"创建节点重构代码,将defexecute_write(sel......
  • 最新SSL证书申请源码,支持API接口,支付在线
    最新SSL证书申请源码,支持API接口,支付在线目前测试还不需要授权,以后更新版就不知道了SSL证书保证网络安全的基本保障。向您介绍我们的在线生成SSL证书系统支持在线生成SSL证书系统,用户登录可在线申请SSL,后台对接ssl证书api接口www.httple.net源码截图: ......
  • 使用openssl创建ssl证书,用于测试https服务
    一个web站点要对外提供https服务就需要ssl证书,ssl证书可以从云服务厂商那里购买,通常也能申请到免费的,但是如果只是为了测试,则可以使用openssl来创建ssl证书。下面是完整的生成过程:第一步:创建私钥opensslgenrsa-outserver.key2048第二步:创建签名请求文件opensslreq-new-key......
  • IIS报错:HTTP 错误 404.17 - Not Found
    新建处理程序映射 *.svc%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dllsvc-ISAPI-4.0*.svc%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dllsvc-ISAPI-4.0-64......
  • IIS报错:HTTP 错误 404.2 - Not Found 由于Web服务器上的”ISAPI和CGI限制”列表设置,无
     解决方法:  ......
  • VVICAPI接口解析,实现根据ID取商品详情
    VVICAPI是一个虚构的API接口名称,我无法提供具体的VVICAPI接口解析。但是,我可以向您展示一般的API接口使用方法,以及如何根据ID获取商品详情的示例代码。假设您有一个名为"VVICAPI"的接口,并且您已经获得了访问该接口的权限和相关的访问令牌(AccessToken)。接下来,您可以使用以下示例代......
  • Clone fail unable to access 'httpsgithub.comLovi-githubmyUserCenter.git' OpenSSL
    bug:unabletoaccess'https://github.com/xxx':OpenSSLSSL_read:SSL_ERROR_SYSCALL,errno10054关于git提交github出现errno10054、port443:Timedout等问题解决_git提交10054_husishuai的博客-CSDN博客按照上边的解决方法即可......
  • HttpServletRequest 方法详解
    request.setCharacterEncoding("utf-8");//设置request编码方式 request.getLocalAddr();//获取本地IP,即服务器IP request.getLocalName();//获取本地名称,即服务器名称 request.getLocalPort();//获取本地端口号,即Tomcat端口号 request.getLocale();//用户的语言环境 req......
  • HTTP响应头信息和请求头信息详解
    web性能测试中有一个web资源分析,web资源是从服务器入手对web服务器的性能进行分析。所以了解一下以下信息是很有必要的哦。一:响应头信息HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响......
  • Http Fetch+StreamSaver.js在内存有限的设备下载大文件
    目前前端没有很好的api支持流式的文件的分片下载。如果直接把整个文件保存到Blob对象中再保存,有可能出现很多不可以预期的问题,可能会因为达到浏览器的Blob对象上限而下载失败。也有机会因为客户端内存太低而导致OOM。那如果我们有额外的文件服务器的话,可以选择把文件先导出到文件......