【开发记录】Controller统一封装返回对象的过程。

工作项目中,后端Controller返回值时,都会统一包装为一个自定义的ResponseData对象,便于统一接受和处理。这里梳理一下其中涉及到的知识点。

自定义响应对象

首先,这个自定义对象作为封装返回信息,需要有基本的一些信息:响应头、响应体。响应头一般用另一个对象定义,需要包含:状态码、响应信息等。
其次,设置多个静态方法,用于快速生成不同类型的ResponseData对象,一般常见的有: success() success(Stirng msg) fail() fail(String msg)等,按需求定义即可。

//因为用于前后端传输,因此要实现Serializable接口。
//响应体内容类型不确定,因此用泛型接收。
public Class ResponseData<T> implements Serializable{
	private Head head;//自定义响应头
	private T body;
	
	public static <T> ResponseData<T> success(){
		ResponseData data = new ResponseData()
		data.setHead....
		return data;
	}
}

这样,在controller中就能够将任意类型的数据封装到统一的响应对象中返回了。

为什么直接返回自定义对象前端能解析到?

正常来说我们应该返回一个HttpResponse类型的对象,但是直接返回自定义的对象也可以。这是因为因为使用了@RestController注解。

@RestController是一个组合注解,它包含了@Controller和@ResponseBody 注解的功能。

  • @Controller:用于将当前类注册为一个Spring组件,并标识为控制器。
  • @ResponseBody:该注解表示当前类方法的返回值会直接作为HTTP响应的内容,而不是进行渲染。
    使用@ResponseBody注解后,会自动进行序列化和反序列化进行数据的传输,Spring默认使用JSON格式的序列化器进行传输。

因此,我们return的 ResponseData 对象,就会被序列化为JSON字符串,放入HttpServletResponse对象中通过HTTP请求传输回前端。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值