Laravel 5.5 HTTP 请求

访问请求实例

在控制器中,获取当前 HTTP 请求实例,需要在构造函数或方法中,对 Illuminate\Http\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');

        //
    }
}

如果还期望在控制器方法中获取路由参数,只需要将路由参数置于其它依赖之后即可。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 更新指定用户
     *
     * @param Request $request
     * @param int $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        //
    }
}

通过路由闭包访问请求实例

还可以在路由闭包中注入 Illuminate\Http\Request,在执行闭包函数的时候服务容器会自动注入输入请求:

use Illuminate\Http\Request;

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

Illuminate\Http\Request 继承自 Symfony\Component\HttpFoundation\Request 类,提供了多个方法来检测应用的 HTTP 请求,下面我们来演示其提供的一些获取请求路径和请求方式的方法。

获取请求路径

path 方法将会返回请求的路径信息,因此,如果请求的 URL 是 http://www.adm.devp/user/1 ,则 path 方法将会返回 user/1:

$path = $request->path();

is 方法允许你验证请求路径是否与给定模式匹配。该方法参数支持 * 通配符:

if($request->is('user/*')){
    //
}

如果请求URL是 http://www.adm.devp/user/1 ,该方法会返回 true。

获取请求 URL

想要获取完整的 URL,而不仅仅是路径信息,可以使用请求实例提供的 url 或 fullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法则包含查询字符串。

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

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

获取请求方式

method 方法将会返回 HTTP 请求方式。你还可以使用 isMethod 方法来验证 HTTP 请求方式是否匹配给定字符串。

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

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

PSR-7 请求

PSR-7 标准指定了 HTTP 消息接口,包括请求和响应。如果你想要获取遵循 PSR-7 标准的请求实例而不是 Laravel 请求实例,首先需要安装一些库。Laravel 可以使用 Symfony HTTP Message Bridge 组件将典型的 Laravel 请求和响应转化为兼容 PSR-7 接口的实现。

composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros

安装完这些库之后,只需要在路由或控制器中通过对请求示例进行类型提示就可以获取 PSR-7 请求:

use Psr\Http\Message\ServerRequestInterface;

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

注:如果从路由或控制器返回的是 PSR-7 响应实例,则其将会自动转化为 Laravel 响应实例并显示出来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 5.5的Eloquent是一个强大的ORM(对象关系映射)工具,可以帮助开发者在数据库中进行数据操作。Eloquent使用PHP语言中的简单易懂的语法,来实现对数据库表的查询、插入、更新和删除等操作。 Eloquent提供了多种方法,用于执行各种类型的数据库查询。比如,通过`all()`方法可以获取表中的所有记录,`find()`方法可以根据给定的主键值来获取单条记录。同时,Eloquent还支持链式调用多个方法,以便实现更复杂的查询逻辑。 在Eloquent中,开发者还可以借助模型来定义数据表之间的关联关系。通过在模型中定义关联关系的方法,可以方便地进行关联表的查询,并且可以使用`with()`方法来预加载关联表的数据,从而减少数据库查询的次数,提升查询性能。 除了查询操作,Eloquent还提供了简单易用的数据插入和更新方法。开发者可以通过`create()`方法创建新的数据记录,也可以通过`update()`方法来更新已有的数据记录。同时,Eloquent还支持批量赋值、批量更新等高效的数据操作方式。 总的来说,Laravel 5.5的Eloquent文档中提供了全面而丰富的API,能够让开发者轻松地进行数据库操作。通过阅读Eloquent文档,开发者可以更好地理解如何使用该工具来提高开发效率,并且能够更好地利用其丰富的特性,来满足不同的开发需求。 Eloquent 是 Laravel 的 ORM 实现,使得数据库操作更加方便。 Eloquent 可以像访问属性一样访问模型,从而在数据库中实现数据的增、删、改、查等操作。里面包括了很多常用的数据库操作方法,如查询构造器,同特点,关联模型等等。 所以学习Eloquent 文档有助于熟练使用正事这一工具,提高代码的质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值