Laravel API 具有非原始类型提示参数的端点
Laravel API endpoint with non-primitive type hinted parameter
我有一个 API 端点,我想将 UUID 传递给该端点。我正在使用一个名为 Laravel-UUID 的包将 UUID 集成到我的应用程序中。我希望采用 UUID 的 API 端点自动将参数解析为 Webpatser\Uuid\Uuid
类型,而不是我必须在每个中手动转换为 Webpatser\Uuid\Uuid
的 string
我的端点。 Laravel 中有没有办法让它尝试解析任何名为 {uuid}
的路由参数,从 string
到 Webpatser\Uuid\Uuid
?
web.php
Route::get('/mycontroller/test/{uuid}', 'Web\MyController@test')->name('test');
MyController.php
use Webpatser\Uuid\Uuid;
...
public function test(Request $request, Uuid $uuid): RedirectResponse
{
echo 'My UUID: ' . $uuid->string;
return redirect()->route('home');
}
我正在尝试通过 URL 调用上述代码,例如:
http://localhost:8000/mycontroller/test/9ec21125-6367-1ab3-9c88-d6de3990ff81
答案是:模型绑定。
在您的 App\Providers\RouteServiceProvider
中添加到 boot()
方法:
Route::bind('uuid', function ($value) {
return Uuid::import($value);
});
并且当您从您的路线访问 {uuid}
时,您将获得 Uuid 对象,例如:
Route::get('test/{uuid}', function($uuid) {
echo $uuid->string;
});
我有一个 API 端点,我想将 UUID 传递给该端点。我正在使用一个名为 Laravel-UUID 的包将 UUID 集成到我的应用程序中。我希望采用 UUID 的 API 端点自动将参数解析为 Webpatser\Uuid\Uuid
类型,而不是我必须在每个中手动转换为 Webpatser\Uuid\Uuid
的 string
我的端点。 Laravel 中有没有办法让它尝试解析任何名为 {uuid}
的路由参数,从 string
到 Webpatser\Uuid\Uuid
?
web.php
Route::get('/mycontroller/test/{uuid}', 'Web\MyController@test')->name('test');
MyController.php
use Webpatser\Uuid\Uuid;
...
public function test(Request $request, Uuid $uuid): RedirectResponse
{
echo 'My UUID: ' . $uuid->string;
return redirect()->route('home');
}
我正在尝试通过 URL 调用上述代码,例如:
http://localhost:8000/mycontroller/test/9ec21125-6367-1ab3-9c88-d6de3990ff81
答案是:模型绑定。
在您的 App\Providers\RouteServiceProvider
中添加到 boot()
方法:
Route::bind('uuid', function ($value) {
return Uuid::import($value);
});
并且当您从您的路线访问 {uuid}
时,您将获得 Uuid 对象,例如:
Route::get('test/{uuid}', function($uuid) {
echo $uuid->string;
});