首页 > PHP > Laravel教程 HTTP 请求

Laravel教程 HTTP 请求

2025-02-11 15:01:54

什么是 Laravel HTTP 请求

在 Laravel 中,HTTP 请求就像是你在生活中给别人发送的一封信或者打去的一个电话。你通过某种方式(信件、电话)向对方传达你的需求或信息,对方(服务器)收到后会根据你的请求做出相应的回应。比如你打电话给餐厅订外卖,你的电话就是一个 HTTP 请求,告诉餐厅你想要点什么菜,餐厅给你的回复就是 HTTP 响应,告诉你订单是否成功等信息。

接收 HTTP 请求

在 Laravel 中,通常在路由和控制器中处理 HTTP 请求。假设你有一个 Laravel 应用,当用户访问你的网站的某个页面时,就会发送一个 HTTP 请求。
  • 定义路由:路由就像是你家的地址,告诉别人(请求)应该到哪里去。在 Laravel 中,你可以在routes/web.php文件中定义路由。例如:
 
Route::get('/user', function () {
    return '这是用户页面';
});
这就定义了一个GET请求的路由,当用户在浏览器中输入你的网站地址加上/user时,就会触发这个路由,返回这是用户页面。这就好像你告诉别人你家住在某个具体的街道和门牌号,别人按照这个地址就能找到你家。
  • 创建控制器:控制器就像是你家里负责处理事情的人。当请求到达路由指定的地方后,控制器来具体处理请求。首先创建一个控制器:
 
php artisan make:controller UserController
然后在控制器中定义方法来处理请求,比如:
 
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index(Request $request)
    {
        // 这里可以获取请求中的数据,比如查询参数
        $name = $request->query('name');
        return '你好,'. $name;
    }
}
接着更新路由,让它指向控制器的方法:
 
 
Route::get('/user', [UserController::class, 'index']);
现在,当用户访问/user路由时,并且在 URL 中带上name参数,比如/user?name=张三,控制器的index方法就会获取到name参数的值,并返回你好,张三。这就好像有人来到你家,告诉你他想要做什么(请求内容),然后你家里负责的人(控制器)根据他说的来处理并给出回应。

发送 HTTP 请求

有时候,你的 Laravel 应用可能需要向其他服务器发送 HTTP 请求,就像你需要给远方的朋友寄一封信一样。在 Laravel 中,可以使用Http门面来发送 HTTP 请求。例如,要向一个外部的天气 API 发送请求获取天气信息:
 
 
use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.example.com/weather', [
    'city' => '北京'
]);

$data = $response->json();
这里通过Http::get方法向指定的 URL 发送了一个GET请求,并带上了city参数为北京。然后通过json方法获取响应的 JSON 数据。就好像你把写好地址和内容的信(请求)交给邮递员,邮递员把对方的回信(响应)带回来给你,你再打开信看看里面写了什么(处理响应数据)。

处理表单提交的 HTTP 请求

在网页中,用户经常会通过表单提交数据,这也是一种 HTTP 请求。比如一个用户注册表单:
  • 创建表单视图:在 Laravel 的视图文件中创建一个表单,例如在resources/views/register.blade.php中:
 
<form action="{{ route('register') }}" method="post">
    @csrf
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required><br>

    <label for="email">邮箱:</label>
    <input type="email" id="email" name="email" required><br>

    <input type="submit" value="注册">
</form>
这里的action属性指定了表单提交的路由,method="post"表示这是一个POST请求。@csrf是 Laravel 的跨站请求伪造保护字段。
  • 定义路由和控制器方法:在routes/web.php中定义路由:
 
Route::post('/register', [UserController::class, 'store']);
UserController中定义store方法来处理表单提交:
 
public function store(Request $request)
{
    // 验证表单数据
    $validatedData = $request->validate([
        'name' => 'required|string|max=255',
        'email' => 'required|email|unique:users',
    ]);

    // 这里可以将数据保存到数据库等操作
    // 假设使用Eloquent模型
    $user = new User;
    $user->name = $validatedData['name'];
    $user->email = $validatedData['email'];
    $user->save();

    return '注册成功';
}
当用户填写表单并点击提交按钮时,就会发送一个POST请求到指定的路由,控制器的store方法会验证数据的合法性,然后将数据保存到数据库,并返回注册成功的信息。这就好像你把填好的表格交给相关工作人员(服务器),工作人员检查表格填写是否正确(验证数据),然后把你的信息记录下来(保存数据)并告诉你办理成功了。
通过以上这些示例,你可以基本了解 Laravel 中 HTTP 请求的接收、发送以及处理表单提交请求的相关知识,就像在生活中你知道如何与他人进行信息交流和互动一样,在 Laravel 应用中,你也可以熟练地处理各种 HTTP 请求来实现各种功能。
使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top