Apifox使用方法

Apifox简介

Apifox 是一款集 API 文档管理、接口调试、Mock 数据生成以及接口自动化测试功能于一体的全功能工具,旨在为开发者和测试人员提供高效的一站式解决方案。它定位为 Postman + Swagger + Mock + JMeter 的综合替代品,通过一套系统、一份数据,解决了多个系统之间的数据同步问题。

核心功能

Apifox 的核心功能涵盖了 API 开发的全生命周期,包括:API 文档管理 ,支持从代码自动生成文档,并兼容 Swagger、OpenAPI 等格式,方便团队共享和维护;接口调试 ,提供强大的调试工具,支持 HTTP、TCP、RPC 等多种协议,帮助开发者快速定位问题;Mock 数据生成 ,内置 Mock.js 规则引擎,根据数据结构智能生成 Mock 数据,支持"零配置"Mock,助力前后端分离开发;自动化测试 ,支持可视化编排测试用例,无需手写脚本代码,测试结果清晰展示,支持导出为 JMeter 格式,便于性能测试;以及团队协作,提供成熟的团队和项目权限管理,支持多种角色设置,接口数据云端同步,实时更新,提升团队协作效率。

简单参数

因为不限制请求类型而且请求参数匹配,所以这两个接口可以同时使用,一个是Get请求,一个是Post请求。(我这里只用了这两种方法,可能还有其他可以让请求参数匹配的方法,但是我没有尝试过)

@RequestMapping 默认支持所有 HTTP 方法(GET、POST、PUT、DELETE 等),因此无论是通过 GET 还是 POST 请求,只要请求参数匹配,这个方法都会被调用。不过,为了提高代码的可读性和语义化,通常建议使用更具体的注解(如 @GetMapping@PostMapping 等)来明确指定 HTTP 方法。

@GetMapping@PostMapping

@GetMapping:明确指定该方法只支持 GET 请求。

@PostMapping:明确指定该方法只支持 POST 请求。

优点:使用这些注解可以提高代码的可读性和语义化,让其他开发者更容易理解每个接口的用途。

@RequestParam

作用 :用于接收请求参数。@RequestParam(name = "name") 表示从请求参数中获取名为 name 的参数,并将其绑定到 username 变量。

默认值 :如果请求中没有 name 参数,可以设置默认值,例如 @RequestParam(name = "name", defaultValue = "defaultName")

java 复制代码
/*测试请求参数接收*/
@RestController
public class get {
  //原始方法
    @RequestMapping("/simplePram")
    public String simplePrarm(@RequestParam(name="name")String username, Integer age) {
        System.out.println(username+":"+age);
        return "OK";
    }
 // 明确指定只支持 GET 请求
    @GetMapping("/simpleParam")
    public String simpleParam(@RequestParam(name = "name") String username, Integer age) {
        System.out.println(username + ":" + age);
        return "OK";
    }

    // 明确指定只支持 POST 请求
    @PostMapping("/simpleParam")
    public String simpleParamPost(@RequestParam(name = "name") String username, Integer age) {
        System.out.println(username + ":" + age);
        return "OK";
    }
}

补充:

JSON 数据

如果你的 POST 请求是 JSON 格式,这段代码无法直接处理,因为 @RequestParam 只能处理 URL 参数或表单数据。如果需要处理 JSON 数据,需要使用 @RequestBody。GET 请求可以包含请求体,但大多数服务器和客户端(如浏览器、HTTP 库)不会处理 GET 请求的请求体。所以不推荐使用Get请求Json格式的请求体。

@RequestMapping:默认支持所有 HTTP 方法,但不建议在实际开发中使用,因为它不够明确。

@GetMapping@PostMapping:明确指定 HTTP 方法,提高代码的可读性和语义化。

@RequestParam:用于接收请求参数,确保请求参数匹配。

简单实体参数

实体参数 User user

  • 作用 :Spring Boot 会自动将请求体中的 JSON 数据映射到 User 实体类中。

  • 关键点

    • User 类需要有对应的字段和 setter 方法,以便 Spring Boot 能够正确地进行数据绑定。

    • 如果请求体中的字段名与 User 类的字段名不匹配,可以使用 @JsonProperty 注解来指定字段名。

    • 如果请求体是 JSON 格式,Spring Boot 会自动调用 Jackson 或 Gson 进行反序列化。

java 复制代码
/*测试请求参数接收*/
@RestController
public class get {
    //实体参数
    @RequestMapping("/simplePojo")
    public String simplePojo(User user) {
        System.out.println(user);
        return "OK";
    }
}

在这里,address的值为null,是因为我定义了一个User类,类的里面有这个值,但是在接口我没有设置这个请求参数,所以就不会报错。如果设置了address,即便没有想要填的值,也要把address带上。

复杂实体参数

数组参数 String[] hobby

  • 作用:Spring Boot 会自动将请求参数中的多个值绑定到数组中。

  • 关键点

    • 请求参数的名称必须与方法参数的名称一致。在这个例子中,请求参数的名称是 hobby

    • 如果请求中包含多个同名参数,Spring Boot 会将这些参数值自动封装到数组中。

    • 如果请求中没有 hobby 参数,hobby 数组将为 null

java 复制代码
@RequestMapping("/complexPojo")
    public String complexPojo(User user) {
        System.out.println(user);
        return "OK";
    }

数组参数

数组参数 String[] hobby

  • 作用:Spring Boot 会自动将请求参数中的多个值绑定到数组中。

  • 关键点

    • 请求参数的名称必须与方法参数的名称一致。在这个例子中,请求参数的名称是 hobby

    • 如果请求中包含多个同名参数,Spring Boot 会将这些参数值自动封装到数组中。

    • 如果请求中没有 hobby 参数,hobby 数组将为 null

java 复制代码
    @RequestMapping("/arrayParam")
    public String arrayParam(String[]  hobby) {
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }

集合参数

@RequestParam List<String> hobby

  • 作用 :Spring Boot 会自动将请求参数中的多个值绑定到 List<String> 中。

  • 关键点

    • @RequestParam 注解用于指定请求参数的名称。如果不指定名称,默认使用方法参数的名称。

    • 如果请求中包含多个同名参数,Spring Boot 会将这些参数值自动封装到 List 中。

    • 如果请求中没有 hobby 参数,hobby 列表将为空(null 或空列表,具体取决于配置)。

java 复制代码
@RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby) {
        System.out.println(hobby);
        return "OK";
    }

时间日期类型

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

  • 作用 :指定日期时间的格式,确保请求参数中的日期时间字符串可以正确解析为 LocalDateTime 类型。

  • 关键点

    • @DateTimeFormat 注解用于指定日期时间的格式。如果不指定格式,Spring Boot 默认会尝试解析常见的日期时间格式。

    • 指定的格式字符串必须符合 ISO 日期时间格式规范。

    • 如果请求参数的格式与指定的格式不匹配,Spring Boot 会抛出 DateTimeParseException 异常。

LocalDateTime time

  • 作用 :接收请求参数中的日期时间值,并将其解析为 LocalDateTime 类型。

  • 关键点

    • LocalDateTime 是 Java 8 引入的日期时间类,用于表示不带时区的日期和时间。

    • Spring Boot 会自动将请求参数中的日期时间字符串解析为 LocalDateTime 类型,前提是格式匹配。

java 复制代码
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(time);
        return "OK";
    }

时间类型要注意代码里面的请求数据的类型

Json参数

@RequestBody User user

  • 作用 :将请求体中的 JSON 数据自动映射到 User 类的实例中。

  • 关键点

    • @RequestBody 注解用于接收请求体中的数据。

    • Spring Boot 会自动使用 Jackson 或 Gson 将 JSON 数据反序列化为 Java 对象。

    • User 类需要有对应的字段和 setter 方法,以便 Spring Boot 能够正确地进行数据绑定。

    • 如果请求体中的字段名与 User 类的字段名不匹配,可以使用 @JsonProperty 注解来指定字段名。

java 复制代码
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user) {
        System.out.println(user);
        return "OK";
    }

路径参数

@PathVariable Integer id

  • 作用 :将路径中的变量 {id} 绑定到方法参数 id 上。

  • 关键点

    • @PathVariable 注解用于接收路径中的变量。

    • 如果路径变量的名称与方法参数的名称一致,可以省略 @PathVariable 注解中的名称,例如 @PathVariable Integer id

    • 如果路径变量的名称与方法参数的名称不一致,必须指定名称,例如 @PathVariable("id") Integer userId

@RequestMapping("/path/{id}/{name}")

  • 作用 :定义了一个接口路径 /path/{id}/{name},并默认支持所有 HTTP 方法。

  • 关键点{id}{name} 是路径变量,可以通过 @PathVariable 注解接收。

@PathVariable String name

  • 作用 :将路径中的变量 {name} 绑定到方法参数 name 上。

  • 关键点 :与 @PathVariable Integer id 类似,@PathVariable 注解用于接收路径中的变量。

java 复制代码
@RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id) {
        System.out.println(id);
        return "OK";
    }
    @RequestMapping("/path/{id}/{name}")
    public String path1Param(@PathVariable Integer id, @PathVariable String name) {
        System.out.println(id+name);
        return "OK";
    }

总结

在 Spring Boot 中,可以通过以下注解接收不同类型的参数:

  • @RequestParam:接收 URL 查询参数。

  • @PathVariable:接收 URL 路径参数。

  • @RequestBody:接收请求体中的 JSON 数据。

  • @RequestHeader:接收请求头中的参数。

  • @DateTimeFormat:接收日期时间参数,并指定其格式。

这些注解使得 Spring Boot 能够灵活地处理各种请求参数,满足不同的业务需求。

相关推荐
九班长15 分钟前
Mirror的多人连接管理及房间系统
windows
一个懒鬼26 分钟前
Edge浏览器打开PDF文件显示空白(每次需要等上一会)
windows·pdf
com未来2 小时前
使用 NSSM 安装 Tomcat 11.0.6 为 Windows 服务
java·windows·tomcat
IT专业服务商13 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构
海尔辛13 小时前
学习黑客5 分钟小白弄懂Windows Desktop GUI
windows·学习
gushansanren13 小时前
基于WSL用MSVC编译ffmpeg7.1
windows·ffmpeg
伐尘14 小时前
【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64
windows·qt·visual studio
专注代码七年14 小时前
在Windows 境下,将Redis和Nginx注册为服务。
windows·redis·nginx
simple_whu20 小时前
开启WSL的镜像网络模式
windows·wsl