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

REST API中consumes/produces application/json含义及SpringBoot示例咨询

关于REST API中consumes和produces的明确定义与SpringBoot示例

核心定义

produces

  • 声明当前API接口能返回给客户端的数据格式,明确告知客户端:该接口只会输出指定类型的响应内容。比如produces = "application/json"表示接口响应体为JSON格式。

consumes

  • 声明当前API接口能接受的客户端请求数据格式,明确告知客户端:只有发送指定类型的请求体,接口才会处理该请求。比如consumes = "application/json"表示接口仅接受JSON格式的请求体。

SpringBoot(Java)实战示例

1. 方法级单独配置

针对单个接口指定请求/响应格式:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    // 仅接受JSON请求体,返回JSON格式响应
    @PostMapping(value = "/users", consumes = "application/json", produces = "application/json")
    public User createUser(@RequestBody User user) {
        // 模拟业务逻辑:生成用户ID并返回
        user.setId(1L);
        return user;
    }
}

// 配套的User实体类
class User {
    private Long id;
    private String username;
    private String email;

    // 省略getter、setter、全参/无参构造方法
}

2. 类级别全局配置

如果Controller下所有接口遵循相同的格式规则,可在类上统一配置:

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(value = "/api/v1", consumes = "application/json", produces = "application/json")
public class ApiController {

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        // 模拟查询用户
        User user = new User();
        user.setId(id);
        user.setUsername("demo_user");
        return user;
    }

    @PutMapping("/users")
    public User updateUser(@RequestBody User user) {
        // 模拟更新用户
        return user;
    }
}

3. 支持多格式场景

若接口需要兼容多种请求/响应格式,可通过数组形式声明:

@PostMapping(value = "/data", 
             consumes = {"application/json", "application/xml"}, 
             produces = {"application/json", "application/xml"})
public DataResponse processData(@RequestBody DataRequest request) {
    // 模拟数据处理逻辑
    return new DataResponse();
}

// 配套的请求、响应实体类(需支持XML序列化,可通过JAXB注解配置)
class DataRequest { /* 字段及getter/setter */ }
class DataResponse { /* 字段及getter/setter */ }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:10:35