Laravel 中的 HTTP 请求是如何工作的?

问题描述 投票:0回答:1

当我访问 my.site/api/genre/slug-name

route/api.php

Route::prefix('genre')->group(function () {
    Route::get('/{slug}', [FilmController::class,'getFilmByGenre'])->name('api_genre_film');
});

getFilmByGenre

public function getFilmByGenre(Request $request, string $slug)
{
    dd($slug, $request->slug, $request->get("slug")); // "slug-name" - "slug-name" - null
}

谁能给我解释一下使用

$slug
$request->slug
$request->get("slug")
时的区别吗?

我正在使用 laravel 10.x。感谢您的帮助!

laravel laravel-request
1个回答
0
投票

这是因为路由参数绑定与查询参数之间的差异。关于路由参数绑定与搜索查询参数的概念。

$slug
参数直接从路由定义获取其值。它是一个路由参数,绑定到 URI 模式。
$request->get("slug")
尝试从查询字符串中检索键“slug”的值。查询字符串是 URL 中 ? 之后的部分。符号,由 & 分隔的键值对组成。 在您的情况下,查询字符串
(my.site/api/genre/slug-name)
中没有“slug”键,因此
$request->get("slug")
为空。

总结:

$slug
:“slug-name”(从路由参数中提取的值)

$request->get("slug")
:null(查询字符串中没有“slug”键)

© www.soinside.com 2019 - 2024. All rights reserved.