laravel 请求参数/cookie/文件获取

获取请求数据

Illuminate\Http\Request
继承自
Symfony\Component\HttpFoundation\Request 类

依赖注入方式

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 存储新用户
     *
     * @param Request $request
     * @return Response
     */
    public function store(Request $request)
    {
        $name = $request->input('name');

        //
    }
}

控制器方法中获取路由参数

Route::put('user/{id}','UserController@update');
...
use Illuminate\Http\Request;
public function update(Request $request, $id)
{
    //
}

路由闭包访问请求,在执行闭包函数的时候服务器会自动注入请求

use Illuminate\Http\Request;

Route::get('/', function (Request $request) {
    //
});

请求路径/方法
获取请求路径

$path = $request->path();
# 请求url http://domain.com/user/1 , path() 返回 user/1

验证请求路径是否与给定模式匹配

if($request->is('user/*')){
    //
}
# 如果请求URL是 http://domain.com/user/1,该方法会返回 true

获取请求url

// 不包含查询字符串
$url = $request->url();
// 包含查询字符串
$url_with_query = $request->fullUrl();

获取请求方法

$method = $request->method(); // GET/POST

验证HTTP请求方式

if($request->isMethod('post')){ 
    // true or false
}

PSR-7请求
链接

请求字符串处理

默认情况下,Laravel 在 App\Http\Kernel 的全局中间件堆栈中引入了 TrimStrings 和
ConvertEmptyStringsToNull 中间件

protected $middleware = [
	// 将字符串两端的空格清除
	\App\Http\Middleware\TrimStrings::class,
	// 将空字符串转化为 null
 	\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class
    ];

获取请求输入

// 获取所有输入值
$input = $request->all();
// 获取单个输入值(获取所有HTTP请求参数值)
$name = $request->input('name', 'default_value');
// 处理表单数组,用 . 访问数组输入
// 请求url http://blog.dev/user/1?products[][name]=aa&products[][name]=bb
$input = $request->input('products.0.name');
# aa
$names = $request->input('products.*.name');
# ['aa', 'bb']
// 获取GET请求查询字符串参数值
$name = $request->query('name', 'aa');
// 关联数组方式获取整个查询字符串的值,类似all()
$query = $request->query();
// 获取POST请求参数值 ???
$query = $request->post();
// 通过动态属性获取输入,获取表单的name字段
$name = $request->name;
// 获取json输入值(content-type请求头为application/json), "."解析数组
$name = $request->input('user.name');
// 只获取输入的部分数据
$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
// 获取非指定输入的数据
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
// 判断请求参数是否存在
if ($request->has('name')) {
    // true
}
// 判断请求参数是否存在(数组形式,只有参数都存在才为true)
if ($request->has(['name', 'email'])) {
    //
}
// 判断参数存在且值不为空
if ($request->filled('name')) {
    //
}

input / query 区别

input :

  • 获取所有 HTTP 请求参数值
  • 从 query + request 属性对象中获取参数值

query:

  • 获取 GET 请求查询字符串参数值
  • 从 query 属性对象中获取参数值

post:

  • 从 request 属性对象中获取参数值

在这里插入图片描述
上一次请求输入

Laravel 允许你在两次请求之间保存上一次输入数据,这个特性在检测校验数据失败后需要重新填充表单数据时很有用,
不过如果你使用的是 Laravel 自带的验功能,则不需要手动使用这些方法,因为一些 Laravel 自带的校验设置会自动调用它们。

cookie

// 从请求中取出Cookie
$value = $request->cookie('name');
// 添加Cookie到响应(Illuminate\Http\Response)
return response('欢迎来到 Laravel 学院')->cookie(
    'cookie_name', 'cookie_value', $valid_minutes
);
// 生成cookie实例(全局辅助函数 cookie,该 Cookie 只有在添加到响应实例上才会发送到客户端)
$cookie = cookie('name', 'value', $minutes);
return response('welcome to this')->cookie($cookie);

文件上传

配置信任代理

使用场景 / 怎么使用 ??

protected $middleware = [
   // 允许快速自定义需要被应用信任的负载均衡器或代理
   \App\Http\Middleware\TrustProxies::class,
];

如果你的应用运行在一个会中断 TLS/SSL 证书的负载均衡器之后,你会注意到有的时候应用不会生成 HTTPS
链接,
通常这是因为应用是从负载均衡器从80端口转发过来的流量,所以不知道应该生成安全加密链接。
要解决这个问题可以使用 Laravel5.5 新增的 App\Http\Middleware\TrustProxies 中间件,该中间件允许你快速自定义需要被应用信任的负载均衡器或代理。
被信任的代理位于这个中间件的 $proxies属性列表,除了配置信任代理之外,还可以配置代理发送的带有请求来源信息的消息头:

信任所有代理

protected $proxies = '**';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值