首页 > 其他 > 详细

Laravel入坑指南(5)——请求与响应

时间:2020-07-23 15:15:29      阅读:53      评论:0      收藏:0      [点我收藏+]

作为互联网典型的Web应用,接收用户请求的数据,并将处理的结果向用户进行响应,是最基础也是最必备的功能。在原生的PHP中,我们常用$_POST、$_GET、$_REQUEST和$_FILES对不同的请求接收,也用echo、var_export()、printf()等语句向用户进行响应。

在Laravel中,框架内部规定了自己的一套机制请求与响应机制。在这一节中,就让我们一起学习这个话题。

 

1、请求

(1) 路由参数

 Laravel的参数,可以通过路由指定,并在路由的回调函数或指定的Controller中进行处理。举两个栗子:

示例1:

\Illuminate\Support\Facades\Route::any(‘/welcome/{id}‘,function ($id){
    return $id;
});

在这个例子中,用户访问http://域名/welcome/6,回调函数中的$id参数就可以接收到6这个值。这里的id参数在url是必填项。

示例2:

//路由部分
\Illuminate\Support\Facades\Route::any(‘/welcome/{id?}‘,"MyController@hello");


//MyController部分
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyController extends Controller
{
    public function hello(Request $req,$id=‘‘)
    {
        return $id;
    }
}

在这个例子中,用户访问http://域名/welcome/6,类MyController的hello函数中的$id参数就可以接收到6这个值。这里的id参数在url是可选项。(注意与示例1进行对比,路由与函数参数的写法均有区别)

(2) URL中GET参数的获取

无论是路由的回调函数,还是controller的行为函数,第一个参数可以用于Request类实例的注入(说白了,函数第一个参数是Request类型的变量)。

如果还有哪位小伙子不清楚什么是GET请求或GET参数,请点击文章最下方的链接联系我:)

在处理函数中,我们这样取到GET参数:

public function action(Request $req)
{
    $req->query(key);    //传入key值就能获取对应的value
}

(3) POST参数的获取

public function hello(Request $req)
{
    $req->post(key);
}

(4) POST与GET参数混合获取(all函数可以同时获取GET和POST的参数,返回数组类型)

public function hello(Request $req)
{
    $arr=$req->all(key);
    $arr[key];    //这就是我们要获取的value
}

(5) COOKIE参数获取

public function hello(Request $req)
{
    $req->cookie(key);    //这是key对应的cookie值
}

(6) 其它

//请求路径
//假设访问的路径是http://192.168.1.5/hello/3?a=b
$req->url();    //获取的是http://192.168.1.5/hello/3
$req->fullUrl();    //获取的是http://192.168.1.5/hello/3?a=b
$req->path();    //获取的是hello/3

 

 

2、响应

11

 

 

3、文件上传

(1)单文件上传:假设表单文件的key是f

public function hello(Request $req)
{
    if($req->hasFile(‘f‘) && $req->file(‘f‘)->isValid())
    {
        $file[‘ext‘]=$req->f->extension();    //文件扩展名
        $file[‘path‘]=$req->f->path();    //文件的路径
        $file[‘mine‘]=$req->f->getMimeType();    //文件mime
        $file[‘originName‘]=$req->f->getClientOriginalName();    //原始文件名
        $file[‘size‘]=$req->f->getClientSize();    //文件尺寸

        /*
        $file的值
        array (
            ‘ext‘ => ‘jpeg‘,
            ‘path‘ => ‘/tmp/phpxq5lSe‘,
            ‘mine‘ => ‘image/jpeg‘,
            ‘originName‘ => ‘1.jpg‘,
            ‘size‘ => 196118,
        )
        */
        $file[‘uploadName‘]=sha1($file[‘originName‘]).‘.‘.$file[‘ext‘];    //要保存的文件名
        $req->f->move(base_path().‘/‘, $file[‘uploadName‘]);    //参数1是所在目录
    }
    else
    {
        $req->f->getErrorMessage();    //错误信息
    }
}

 

 

(2)多文件上传:

 

Laravel入坑指南(5)——请求与响应

原文:https://www.cnblogs.com/ddcoder/p/13359342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!