3.2 响应
打开 www.baidu.com 从浏览器的开发者工具里可以看到一个响应是这样的:
那么我们在编写 web 应用的时候通常会用到 响应
相关的哪些API呢?我举几个例子你就明白了。
前面我们已经做了一个简单的登录功能,在这个功能中我们已经做到了访问一个 URL
可以看到 HTML
页面的过程。
你去查看代码只有一行。
那么框架是怎么做的呢? Blade
将模板默认都存放在 classpath
下的 templates
目录中,当我们编写一个路由的时候返回值是 String
或 ModelAndView
类型则框架会帮你渲染到对应的视图页面,所以上面代码片段中访问 /login
会跳转到 templates/login.html
页面。
@GetRoute("login")
public void login(Response response) {
response.render("login.html");
}
这两个代码片段达到的效果是相同的,随你爱好。
返回JSON数据
很多时候我们会开发一些web api程序,返回 json
格式的数据,在 Blade
中更是方便,怎么做呢?
没错,就是这么 easy
,有同学说只能这样吗?我连 response.json(users)
都不想写。。。好吧,果然程序猿都是偷懒才聪明的。还有一种方式,像 SpringMvc
:
public List<String> users() {
return Arrays.asList("jack", "tom", "biezhi");
}
这里使用 注解标识当前的路由返回一定是一段
json
数据,返回值框架会帮你处理。我们访问浏览器得到的将是:
Cookie
是我们web开发中常用的一个技术,通常用于 记住我
等操作。在 Blade
中向浏览器写入 Cookie
也是使用 Response
对象完成的,来看看吧。
response.cookie("c1", "value1");
当然上面的写法是写最简单的 Cookie
,但很多时候我们需要定制化,这时候可以看看 Response
对象里 Cookie
相关的API了。
Response removeCookie(String name)
Response cookie(Cookie cookie)
Response cookie(String name, String value)
Response cookie(String name, String value, int maxAge, boolean secured)
还挺多的吗,一个比一个长呢。。是的,看到这些API大概都清楚怎么使用了。第一个是移除一个 Cookie
的,后面都是写入一个 Cookie
的方法。具体解释都可以在源码注释中看到。
返回文本/html
返回文本/html也非常的简单,Blade
提供了两个API帮你完成返回文本和html。
void text(String text)
void html(String html)
只需要将响应给客户端的字符串传递即可。
有时候我们会希望做完某个操作后重定向到另一个页面,在HTTP中其实就是 302
状态码干的。比如登录后后台直接跳转到登录成功的页面。
其他操作
Response status(int status)
Response notFound()
Response contentType(String contentType)
Map<String, String> headers()
Response header(String name, String value)
Map<String, String> cookies()
void json(String json)
void body(@NonNull byte[] data)
好了,各位看官,关于 Response
响应的介绍就到这里,我们下次来讲 Blade
中的 容器。