You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST API能否返回不同成功状态码?Spring Boot如何按条件返回200/204?

问题解答

1. REST API是否允许返回多个成功状态码?

允许。2xx范围的状态码都属于成功类状态码,不同编码对应不同的成功场景,完全符合REST规范:

  • 200 OK:请求成功,通常会携带响应体返回业务数据
  • 204 No Content:请求成功,但服务端没有需要返回的业务内容
    你当前的需求完全符合这两个状态码的使用场景,不存在规范冲突。

2. Spring Boot实现动态返回不同成功状态码的方案

最常用且最灵活的实现方式是使用org.springframework.http.ResponseEntity类封装返回结果,你可以根据参数动态指定状态码、响应头、响应体。

代码示例:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {

    @GetMapping("/test/api")
    public ResponseEntity<Object> testApi(@RequestParam int flag) {
        // flag为0时返回200+业务数据
        if (flag == 0) {
            // 这里的自定义对象可以替换为你实际需要返回的业务数据
            Object responseData = "你的业务返回内容";
            return ResponseEntity.ok(responseData);
        }
        // flag为1时返回204无内容
        else if (flag == 1) {
            // 204状态码无需设置响应体,直接build即可
            return ResponseEntity.noContent().build();
        }
        // 其他参数值可以返回400等错误状态码,根据你的业务需求补充
        else {
            return ResponseEntity.badRequest().body("flag参数不合法");
        }
    }
}

注意事项:

  • 204状态码规范要求不能携带响应体,所以返回204时不要调用body设置方法,避免部分客户端解析异常
  • 如果是固定状态码的接口可以用@ResponseStatus注解修饰方法,但动态切换状态码的场景优先使用ResponseEntity

内容的提问来源于stack exchange,提问作者Tianhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:36:02