swagger3后台接收不到@RequestBody注解的请求体参数问题

错误示例:

swagger3发起请求:

 输出结果:

 可以看到后台没有接收到前端参数。

错误原因:

我们在引入@RequestBody注解时错误的引入了swagger注解的依赖

而我们应该使用spring的@RequestBody注解依赖。

改正:

引入spring的依赖

重起后在swagger3重新发起请求

后台成功获取到请求体内容!

### 关于 Spring Boot PostMapping 返回值为1 的原因分析 在使用 `@PostMapping` 注定时,Spring Boot 的 RESTful 接口返回值可能受到多种因素的影响。以下是可能导致返回值为 `1` 的几种常见情况: #### 1. **方法返回值类型** 如果控制器中的方法返回的是一个简单的数值类型(如 `int` 或 `Integer`),而该方法逻辑最终返回了整数 `1`,那么这可能是由于业务逻辑的设计决定。例如,在某些情况下,开发者可能会通过返回特定的数字来表示操作成功或其他状态。 ```java @PostMapping("/example") public int exampleMethod() { return 1; // 可能是为了标记某种状态 } ``` 这种设计通常不推荐,因为直接返回原始数据类型的含义不够清晰。建议改用更具描述性的对象结构,比如封装成 JSON 格式的响应体[^1]。 --- #### 2. **数据库操作的结果** 当接口涉及对数据库的操作时,许多 ORM 框架(如 JPA 或 MyBatis)会返回受影响的行数作为执行结果。如果某个更新或插入语句影响了一行记录,则框架可能会将这个结果传递给控制器层并被直接返回到前端。 ```java @Service public class ExampleService { public int updateExample(ExampleEntity entity) { return repository.update(entity); // 假设这里返回受影向的行数 } } @RestController @RequestMapping("/api/example") public class ExampleController { @Autowired private ExampleService service; @PostMapping("/update") public int update(@RequestBody ExampleEntity entity) { return service.updateExample(entity); // 如果只有一行受到影响,返回值就是1 } } ``` 在这种场景下,应该考虑调整返回值的形式,使其更加标准化和易于理解[^3]。 --- #### 3. **JSON 序列化配置问题** 有时,即使实际返回的对象是一个复杂的实体类,但由于序列化的设置不当或者 Jackson 配置的原因,部分字段未被正确渲染出来,仅剩下一个默认值(如 `1`)。特别是当存在 `null` 字段过滤规则时,这种情况更容易发生。 可以通过修改全局 ObjectMapper 来控制哪些属性会被忽略掉: ```yaml spring: jackson: default-property-inclusion: non_null # 跳过所有 null 属性 ``` 上述 YAML 设置能够帮助移除任何值为空的键值对,但如果目标对象本身非常简单(只有一个有效成员变量等于 `1`),则整个输出看起来就像是单独的一个数字[^4]。 --- #### 4. **ApiOperation 注解的作用范围** 关于提到的 `@ApiOperation` 注解,它主要用于 Swagger 文档生成工具中描述 API 行为及其预期输入/输出模型。虽然不会直接影响运行期间的行为,但它可以帮助开发人员更好地理解和测试这些端点的功能。 典型用法如下所示: ```java @Api(tags = {"示例模块"}) @RestController @RequestMapping("/api/example") public class ExampleController { @ApiOperation(value = "创建新资源", notes = "接收 POST 请求并将新的条目保存至数据库") @PostMapping("/create") public ResponseEntity<String> createResource(@Valid @RequestBody ResourceRequest request) { ... } } ``` 因此,尽管 `@ApiOperation` 不会造成具体的技术错误,但在调试过程中仍需确认其标注的内容是否与当前实现一致[^2]。 --- ### 综合解决方案建议 为了提高系统的可维护性和用户体验质量,强烈建议遵循 RESTful 设计原则统一管理 HTTP 状态码以及对应的 Body 数据格式。例如采用以下模式构建标准响应结构: ```json { "code": 0, "message": "Success", "data": { ... } /* 实际携带的数据 */ } ``` 这样无论后台发生了什么变化,前台都可以依据固定的协议解析信息而不至于迷失方向。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值