让我们打开ResponseEntity.class
嗯。可以说是非常的清爽了;一个注释文档都没看到┑( ̄Д  ̄)┍
无奈;只好上官网找API:ResponseEntity API
Extension of
HttpEntity
that adds aHttpStatus
status code. Used inRestTemplate
as well@Controller
methods.
以上引用自ResponseEntity API
直译:
可以添加HttpStatus状态码的HttpEntity的扩展类。被用于RestTemplate和Controller层方法
简单粗暴理解:
ResponseEntity继承了HttpEntity,是HttpEntity的子类且可以添加HttpStatus状态码(推测HttpEntity不能添加HttpStatus状态码)。被用于RestTemplate和Controller层方法
在ResponseEntity中有两个ok方法;一个无参,一个有参
* public static ResponseEntity.BodyBuilder ok()
Create a builder with the status set to OK.
以上引用自ResponseEntity API
直译:
创建一个设置了OK状态的builder
简单粗暴理解:
这个方法若被调用的话,返回OK状态
* public static ResponseEntity ok(T body)
A shortcut for creating a
ResponseEntity
with the given body and the status set to OK.
以上引用自ResponseEntity API
直译:
一种捷径去创建ResponseEntity,通过被给予的body和设置了OK的状态
简单粗暴理解:
这个方法若被调用的话,返回body内容和OK状态
至于OK状态是什么,后面再解释
//无参ok
public static ResponseEntity.BodyBuilder ok() {
return status(HttpStatus.OK);
}
//有参ok
public static ResponseEntity ok(T body) {
ResponseEntity.BodyBuilder builder = ok();
return builder.body(body);
}
通过源码,我们不难发现
* 与API中的描述一致,无参ok方法返回OK状态,有参ok方法返回body内容和OK状态
* body类型 是 泛型T,也就是我们不确定body是什么类型,可以向ok方法传递任意类型的值
* 有参ok方法其实有调用无参ok方法
那么源码中的BodyBuilder又是什么鬼呢,后面再解释
现在我们都知道ResponseEntity概念是可以添加HttpStatus状态码的HttpEntity的扩展类;那么不难推测出这个OK状态其实就是HttpStatus状态码(其实在上面的源码中也能看到了)
//无参ok
public static ResponseEntity.BodyBuilder ok() {
return status(HttpStatus.OK);
}
那么有计算机网络基础的看官都知道,在HttpStatus状态码中代表OK的是200;不信??看源码(应该没人不信吧┑( ̄Д  ̄)┍)
通过ResponseEntity的结构,我们知道BodyBuilder是ResponseEntity中的接口
Defines a builder that adds a body to the response entity.
以上引用自BodyBuilder API
直译:
定义一个可以添加body到response entity的builder
简单粗暴理解:
ResponseEntity可以通过这个builder返回任意类型的body内容
public interface BodyBuilder extends ResponseEntity.HeadersBuilder<ResponseEntity.BodyBuilder> {
ResponseEntity.BodyBuilder contentLength(long var1);
ResponseEntity.BodyBuilder contentType(MediaType var1);
ResponseEntity body(@Nullable T var1);
}
通过BodyBuilder源码,不难发现
* BodyBuilder接口中的body方法的参数可以为空值(有@Nullable标签名字推测其允许空值)
ResponseEntity API
BodyBuilder API
Spring Boot初体验
我才发现原来class文件是不会有注释文档的;
在idea中打开class文件,发现idea代码编辑区的右上角有个Download Sources,很明显就是下载源码的意思,我点了,然后源码就下载下来了,根本不用去官网查API的。。