Redirects,重定向。就是访问一个地址,把请求重定向到另一个地址。先在 routes.js 里面,添加两条路由 .. Route.get .. 地址是 list-of-posts .. 一个处理器 .. 需要用到 response ..
处理器里面,可以使用 resposne 的 redirect ,把请求重定向到 /posts 这个地址 ..
下面再添加一条路由 .. Route.get .. 地址是 posts ... 一个处理器 .. return 的响应是 List of posts ..
回到浏览器 .. 打开浏览器的开发者工具 .. Network .. 然后访问一下 list-of-posts .. 你会发现,请求被重定向到了 /posts 这个地址 ..
在选中 list-of-posts 这个请求 .. 响应里的 Status Code,就是状态码是 302 Found .
在响应的头部里面,还有一个 Location .. 它的值就是重定向到的那个位置 ..
重定向的时候可以带着地址上面的查询参数 .. 这里需要把 redirect 的第二个参数设置成 true .. 再试一下 ..
访问一下 list-of-posts ,加上一个 orderby 查询参数 .. 重定向以后,这个查询参数会在新的地址上 ..
重定向的状态码可以设置成 301 .. 把它作为 redirect 方法的第三个参数 .. 添加一个 301 ..
回到浏览器 . . 现在 Status 是 302 ..
再访问一下 list-of-posts ..
这回响应的状态码会变成 301 ..
route
重定向的时候也可以使用路由的名字 .. 比如我们先给这个 posts 地址的路由起个名字 .. 用一下 as 方法 .. 名字是 list-of-posts ..
这样在重定向的时候,可以使用 response 里面的 route 这个方法 .. 它的第一个参数就是路由的名字 .. 设置成 list-of-posts ..
回到浏览器 .. 访问一下 list-of-posts .. 会被重定向到 posts 这个地址 ..
再回到项目改造一下 .. 给这个 posts 添加一个参数,名字是 :category,一个问号,表示它是一个可选的参数 ..
响应的文字也可以改一下 .. 先把 params 从 context 参数里拿出来用一下 ..
return 的是一个字符模板 .. List of 再加上 params 里的 category .. 默认让它的值是 default .. 后面再加上一个 posts ..
然后再定义一条路由 .. 地址是 list-of-food-posts .. 访问这个地址可以重定向到下面的这个 list-of-posts 路由 ..
再设置一下 route 方法的第二个参数 .. 一个对象 .. 添加一个 category ,对应的值可以设置成 food ..
回到浏览器 .. 再试一下 .. 这次访问一下 list-of-food-posts ..
这次重定向到的地址会是 /posts/food ..