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 能够灵活地处理各种请求参数,满足不同的业务需求。

相关推荐
我命由我123454 小时前
VSCode - VSCode 放大与缩小代码
前端·ide·windows·vscode·前端框架·编辑器·软件工具
PT_silver4 小时前
tryhackme——Abusing Windows Internals(进程注入)
windows·microsoft
爱炸薯条的小朋友5 小时前
C#由于获取WPF窗口名称造成的异常报错问题
windows·c#·wpf
Lw老王要学习6 小时前
VScode 使用 git 提交数据到指定库的完整指南
windows·git·vscode
CodeOfCC12 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
momo卡12 小时前
MinGW-w64的安装详细步骤(c_c++的编译器gcc、g++的windows版,win10、win11真实可用)
c语言·c++·windows
南林yan1 天前
DLL动态库实现文件遍历功能(Windows编程)
windows
Mike_6661 天前
win10安装WSL2、Ubuntu24.04
windows·ubuntu·wsl2
liulun1 天前
Skia如何绘制几何图形
c++·windows
old_power1 天前
UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)
c语言·c++·windows