5

获取请求/响应对象

  • 请求对象 Request Object
    使用 依赖注入 的方式来获取请求对象 $request
use IlluminateHttpRequest;
Route::get('/request', function (Request $request) {
    // $request只是个形参, 不一定非要使用 $request
    dd($request);  // dd是一个助手函数
});
  • 响应对象 Response Object
    使用助手函数来获取响应对象
use IlluminateHttpRequest;
Route::get('/response', function () {
    // $request只是个形参, 不一定非要使用 $request
    $response = response();
    dd($response);
});

Request 对象获取请求信息

  • method() 获取请求的方法,返回请求类型字符串
  • isMethod('post') 判断请求方法, 返回布尔值
  • path() 获取路径信息, 返回路径信息字符串
  • url() 获取完整的请求url, 返回url字符串
  • port() 获取请求的端口, 返回端口号 integer
  • cookie('key') 获取cookie信息
  • ip() 获取请求的ip, 返回ip字符串
use IlluminateHttpRequest;
public function getRequestPath(Request $request) {
    // http://www.study.io/user/edit/3:80

    $request->method(); // GET
    $request->isMethod('post'); // false
    $request->path(); // user/edit/3
    $request->url();  // http://www.study.io/user/edit/3:80
    $request->port(); // 80
    $request->cookie('name');
    $request->ip();
}

Request 对象获取上传文件信息

  • has('file') 判断是否有某个文件,返回布尔值
  • file('file') 获取上传的文件, 返回一个包含文件信息的对象
  • isValid() 判断文件是否上传成功, 返回布尔值
  • path() 获取上传文件的路径, 返回绝对路径字符串
  • extension() 获取上传文件的后缀
  • move() 移动文件
use IlluminateHttpRequest;
public function getFiles(Request $request) {
    if ( $request->has('file') ) {
        $fileObject = $request->file('file');
        $bool = $fileObject->isValid();
        $path = $fileObject->path();
        $ext  = $fileObject->extension();
        $fileObject->move('upload/path', 'fileName'); // bool
    }
}

基本响应

  • return 字符串 / 数组
  • response('message', httpStatusCode) Response 对象
  • header('key','value') 返回信息并设置响应头
  • withHeaders(['key'=>'value']) 设置多个响应头信息
  • cookie('key', 'value') 添加cookie信息到响应

如果是字符串或者数组,可以使用 return 语句来响应

Route::get('/response', function () {
    // return 'strin';
    // return [ 'name' => 'alex', 'age'  => 18 ];
    // return response('message', 200);
    // return response()->json(['name' => 'alex', 'age' => 18]);
    // return response('<h1>hello world</h1>', 200)->header('content-type', 'text/html');
    /*
    return response('<h1>你好, 世界!</h1>', 200)->withHeaders([
        'content-type' => 'text/html;charset=UTF-8',
        'test-content' => 'hello world',
    ]);
    */
    // return response('response success', 200)->cookie('name', 'user1', 10);
    return redirect('/');
});

重定向响应

  • redirect() 重定向到指定的路由
  • route() 重定向到指定名称的路由
  • action() 重定向到控制器
  • away() 重定向到外部域名
  • with() 重定向并且带session数据
Route::get('/redirect', function () {
    // return redirect('/admin/user/create');
    // return redirect()->route('login');   
    // return redirect()->action('adminUserControllercreate');
    // return response()->away('http://wwww.baidu.com');
    // return view('admin.user.create'); // 或者 return response()->view('admin.user.create');
    return response()->with('key', 'value')->with(['k'=>'v', 'k2'=>'v2']);
});

其他响应

  • view() 视图响应
  • json() json 响应
  • jsonp() JSONP 响应
  • download() 文件下载响应
  • file() 文件响应
Route::get('/response/other', function () {
    // return response()->json(['name' => 'tom', 'age' => 18]);
    // return response()->jsonp($request->input('callback'), ['name' => 'tom', 'age' => 18]);
    // return view('admin.user.create');  // 或者 return response()->view('admin.user.create');
    // return response()->download($filePath);
    // return response()->file($filePath, $headers)
    // 
});
原文地址:https://www.cnblogs.com/liaohui5/p/10581615.html