使用idea自带的http client测试rest api

前面我们完成了基本的用户模块的REST API的开发。这一节我们将测试下web模块的功能是否正常。

也许大家习惯了用外部的http测试工具,如Postman来测试,这里我们将采用idea自带的http client测试工具,看用它来编写发送请求的内容会有多么简单和直观。

为了能在登录后可以看到用户信息,我们再提供一个接口,在登录后获取会话中保存的用户信息。

UserAPI.java

java 复制代码
@GetMapping("profile")
Response<UserInfoDTO> profile(HttpSession session);

UserController.java

java 复制代码
@Override
public Response<UserInfoDTO> profile(HttpSession session) {
    UserInfoDTO userInfo = (UserInfoDTO) session.getAttribute(SessionConst.LOGIN_USER);
    if (userInfo == null) {
        // todo 暂时写死,待重构...
        return Response.fail("需要登录才能访问", "401");
    }
    return Response.ok(userInfo);
}

创建http后缀的文件

我们在工程的根路径下创建一个test.http文件。在其中编写发送http的请求内容。

http 复制代码
### 用户注册
POST http://localhost:8080/user/register
Content-Type: application/x-www-form-urlencoded

username=zhangsan&password=123

以上我们编写了一个发送用户注册请求的http脚本,提交方式为POST的表单提交,并且制定了要提交的表单参数。

当我们启动服务后,就可以测试了,点这里的箭头,发送请求进行测试:

测试结果:

代表测试是成功的。

完成其他REST API请求脚本

按照前面的格式我们再完成其他的rest api请求的编写:

http 复制代码
### 用户登录
POST http://localhost:8080/user/login
Content-Type: application/x-www-form-urlencoded

username=zhangsan&password=123

### 更新个性签名
POST http://localhost:8080/user/signature
Content-Type: application/x-www-form-urlencoded

signature=每天进步一点点

### 查看用户信息
GET http://localhost:8080/user/profile

### 退出用户
POST http://localhost:8080/user/logout

启动服务后,我们将按照下面的顺序来测试验证:

  1. 查看用户信息 (需要登录才能访问)

  2. 更新个性签名(需要登录才能访问)

  3. 用户登录 (成功)

  4. 查看用户信息(签名为空)

  5. 更新个人签名(成功)

  6. 查看用户信息(签名未更新)

处理bug

这里我们测试出一个bug,更新签名成功后,查看用户信息发现签名没更新,原因是我们session存的信息没有更新,修复下:

java 复制代码
@Override
public Response<Void> signature(String signature, HttpSession session) {
    // 先从Session里获取用户
    ...
    userService.updatePersonalSignature(userInfo.getId(), signature);
    userInfo.setPersonalSignature(signature);
    return Response.ok();
}

我们从数据库中删除注册的用户,重新从注册请求开始再测试一遍

这里我们通过界面操作来删除记录,不要忘了删除后,要点下后面的向上箭头的commit图标。

ok,现在测试到第7步,ok了:

然后我们,继续把流程测完:

  1. 退出登录(成功)
  2. 查看用户信息(需要登录)

ok,流程都ok!我们发现用idea自带的http client工具进行rest api的测试还是很方便的,而且还能将本地的cookie中包含的sessionId正确提交,确保服务器端的session存取ok。

遗留的问题

这里我们也不要忽略异常情况的测试,比如用普通用户登录管理员登录的地址:

得到了我们想要的提示结果,另外登录失败的测试:

这些失败的响应的数据格式并不是我们期望的,下一节我们将进行全局异常的处理,来返回统一的结构。

相关推荐
雪宫街道2 小时前
SpringBoot 向 IOC 容器注册组件的两种姿势:@Configuration 与 @Import
java·spring boot·后端·spring
接着奏乐接着舞3 小时前
springboot mp mybatis plaus
windows·spring boot·mybatis
金融支付架构实战指南3 小时前
Milvus 向量检索服务 + SpringBoot 实战:电商商品语义检索与相似商品推荐
spring boot·后端·milvus·向量检索
愛~杦辷个訾4 小时前
Java Springboot使用阿里云oss对图片进行等质量压缩,转换成webp格式的压缩图。
java·spring boot·阿里云·oss
霸道流氓气质4 小时前
Spring Boot Multipart 表单中文乱码问题全解析
java·spring boot·后端
RuoyiOffice4 小时前
从 0 到 1 搭建 RuoyiOffice:30 分钟跑通后端+前端+移动端
前端·spring boot·uni-app·开源·oa·ruoyioffice·hrm
霸道流氓气质4 小时前
Spring Boot 文件上传大小限制配置全解析
spring boot·后端·firefox
Java面试题总结4 小时前
SpringBoot API参数校验
java·spring boot·后端
雪宫街道5 小时前
SpringBoot 静态资源映射规则与定制
java·spring boot·后端·spring
西凉的悲伤6 小时前
Spring Boot 与 Maven 依赖管理详解
spring boot·后端·maven·依赖管理