• laravel5.2总结--响应


     

    1 基本响应

    1.1 返回一个字符串,指定的字符串会被框架自动转换成 HTTP 响应。
    Route::get('/', function () { return 'Hello World'; });
     
    1.2 返回一个完整的 Response 实例时,就能够自定义响应的 HTTP 状态码以及标头。
    use IlluminateHttpResponse; Route::get('home', function () { return (new Response($content, $status)) ->header('Content-Type', $value); });
    为了方便起见,你可以使用辅助函数 response:
    Route::get('home', function () { return response($content, $status) ->header('Content-Type', $value); });

    2 其它响应类型

    2.1 视图响应
    如果你想要控制响应状态码及标头,同时也想要返回一个视图作为返回的内容时,则可以使用 view 方法:
    return response()->view('hello', $data)->header('Content-Type', $type);
    当然,如果你没有自定义 HTTP 状态码及标头的需求,则可以简单的使用全局的 view 辅助函数。
    return view('hello',$data);
    2.2 JSON 响应
    json 方法会自动将标头的 Content-Type 设置为 application/json,并通过 PHP 的 json_encode 函数将指定的数组转换为 JSON:
    return response()->json(['name' => 'Abigail', 'state' => 'CA']);
    如果你想创建一个 JSONP 响应,则可以使用 json 方法并加上 setCallback:
    return response()->json(['name' => 'Abigail', 'state' => 'CA']) ->setCallback($request->input('callback'));
    2.3 文件下载
    download 方法可以用于生成强制让用户的浏览器下载指定路径文件的响应。download 方法接受文件名称作为方法的第二个参数,此名称为用户下载文件时看见的文件名称。最后,你可以传递一个 HTTP 标头的数组作为第三个参数传入该方法:
    return response()->download($pathToFile); return response()->download($pathToFile, $name, $headers);
    2.4 在响应发送给用户之前,使用 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', ]);
     

    3.重定向

    3.1 简单重定向
    最简单的方式就是通过全局的 redirect 辅助函数:
    Route::get('dashboard', function () { return redirect('home/dashboard'); });
    有时你可能希望将用户重定向至前一个位置,例如当提交一个无效的表单之后。这时可以使用全局的 back 辅助函数来达成这个目的:
    Route::post('user/profile', function () { // 验证该请求... return back()->withInput(); });
    3.2 重定向至命名路由
    当你调用 redirect 辅助函数且不带任何参数时,将会返回 IlluminateRoutingRedirector 的实例,你可以对该 Redirector 的实例调用任何方法。举个例子,要生成一个 RedirectResponse 到一个命名路由,你可以使用 route 方法:
    return redirect()->route('login');
    如果你的路由有参数,则可以将参数放进 route 方法的第二个参数:
    // 重定向到以下 URI: profile/{id} return redirect()->route('profile', [1]);
    如果你要重定向至路由且路由的参数为 Eloquent 模型的「ID」,则可以直接将模型传入,ID 将会自动被提取:
    return redirect()->route('profile', [$user]);
    3.3 重定向至控制器行为
    请记得,你不需要指定完整的命名空间,因为 Laravel 的 RouteServiceProvider 会自动设置默认的控制器命名空间:
    return redirect()->action('HomeController@index');
    当然,如果你的控制器路由需要参数的话,你可以传递它们至 action 方法的第二个参数:
    return redirect()->action('UserController@profile', [1]);
    3.4 重定向并加上 Session 闪存数据
    通常重定向至新的 URL 时会一并写入闪存数据至session。所以为了方便,你可以利用链式调用的方式创建一个 RedirectResponse 的实例并闪存数据至 Session。这对于在一个动作之后保存状态消息相当方便:
    Route::post('user/profile', function () { // 更新用户的个人数据... return redirect('dashboard')->with('status', 'Profile updated!'); });
    当然,在用户重定向至新的页面后,你可以获取并显示session的闪存数据,注意这里闪存的信息和使用使用$request->flash()闪存数据提出方法不同,old('status')是取不到的,要使用session('status')
    @if (session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif
     
     
     
  • 相关阅读:
    【笔记】Hierarchical Attention Networks for Document Classification
    Chart Parser 中 Earley's 算法的应用
    使用 JFlex 生成词法分析器的安装配置及简单示例
    UNIX 系统下退出 git commit 编辑器
    SQL语法
    MySQL 和 Javaweb 的报错合集
    最短路径(SP)问题相关算法与模板
    dfs | Security Badges
    redis哨兵机制图谱
    docker笔记
  • 原文地址:https://www.cnblogs.com/redirect/p/7456516.html
Copyright © 2020-2023  润新知