HTTP 响应

更新时间: 2019-08-01 16:47

基本响应

当然,所有的路由及控制器必须返回某个类型的响应,并发送回用户的浏览器。Laravel 提供了几种不同的方法来返回响应。最基本的响应就是从路由或控制器简单的返回一个字符串:

$router->get('/', function () {
    return 'Hello World';
});

指定的字符串会被框架自动转换成 HTTP 响应。

响应对象

但是,对于大多数路由和控制器行为操作,你将返回完整的 Illuminate\Http\Response 实例。 返回完整的 Response 实例允许你自定义响应的 HTTP 状态码和标题。 一个 Response 实例继承自 Symfony\Component\HttpFoundation\Response 类,并且提供了多种构建 HTTP 响应的方法:

use Illuminate\Http\Response;

$router->get('home', function () {
    return (new Response($content, $status))
                  ->header('Content-Type', $value);
});

为了方便起见,你可以使用 response 辅助函数:

$router->get('home', function () {
    return response($content, $status)
                  ->header('Content-Type', $value);
});

注意: 有关 Response 方法的完整列表可以参照 API 文档 以及 Symfony API 文档

附加标头至响应

大部份的响应方法是可链式调用的,这让你可以顺畅的创建响应。举例来说,你可以在响应发送给用户之前,使用 header 方法增加一系列的标头至响应:

return response($content)
            ->header('Content-Type', $type)
            ->header('X-Header-One', 'Header Value')
            ->header('X-Header-Two', 'Header Value');

或者你可以使用 withHeaders 方法来设置数组标头:

return response($content)
            ->withHeaders([
                'Content-Type' => $type,
                'X-Header-One' => 'Header Value',
                'X-Header-Two' => 'Header Value',
            ]);

其它响应类型

使用辅助函数 response 可以轻松的生成其它类型的响应实例。当你调用辅助函数 response 且不带任何参数时,将会返回 Laravel\Lumen\Http\ResponseFactory contract 的实现。此 Contract 提供了一些有用的方法来生成响应。

JSON 响应

json 方法会自动将标头的 Content-Type 设置为 application/json,并通过 PHP 的 json_encode 函数将指定的数组转换为 JSON:

return response()->json(['name' => 'Abigail', 'state' => 'CA']);

你可以选择提供一个状态码和一个额外的标题数组:

return response()->json(['error' => 'Unauthorized'], 401, ['X-Header-One' => 'Header Value']);

如果你想创建一个 JSONP 响应,则可以使用 json 方法并加上 setCallback 方法:

return response()
            ->json(['name' => 'Abigail', 'state' => 'CA'])
            ->setCallback($request->input('callback'));

文件下载

download 方法可以用于生成强制让用户的浏览器下载指定路径文件的响应。download 方法接受文件名称作为方法的第二个参数,此名称为用户下载文件时看见的文件名称。最后,你可以传递一个 HTTP 标头的数组作为第三个参数传入该方法:

return response()->download($pathToFile);

return response()->download($pathToFile, $name, $headers);

注意: 管理文件下载的扩展包 Symfony HttpFoundation,要求下载文件必须是 ASCII 文件名。

重定向

重定向响应是类 Illuminate\Http\RedirectResponse 的实例,并且包含用户要重定向至另一个 URL 所需的正确标头。有几种方法可以生成 RedirectResponse 的实例。最简单的方法就是通过全局的 redirect 辅助函数:

$router->get('dashboard', function () {
    return redirect('home/dashboard');
});

重定向至命名路由

当你调用 redirect 辅助函数且不带任何参数时,将会返回 Laravel\Lumen\Http\Redirector 的实例,你可以对该 Redirector 的实例调用任何方法。举个例子,要生成一个 RedirectResponse 到一个命名路由,你可以使用 route 方法:

return redirect()->route('login');

如果你的路由有参数,则可以将参数放进 route 方法的第二个参数,如下:

// For a route with the following URI: profile/{id}

return redirect()->route('profile', ['id' => 1]);

如果你要重定向至路由且路由的参数为 Eloquent 模型的「ID」,则可以直接将模型传入, ID 将会自动被提取:

return redirect()->route('profile', [$user]);

查看更多 Laravel 中文文档 信息

数据结构与算法

数据结构与算法

Michael McMillan / 吕秀峰、崔睿 / 人民邮电出版社 / 2009-5 / 49.00元

《数据结构与算法C#语言描述》是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。《数据结构与算法C#语言描述》介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。 《数据......一起来看看 《数据结构与算法》 这本书的介绍吧!

XML 在线格式化

XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具

HSV CMYK 转换工具

HSV CMYK互换工具