api - laravel 4 使用通配符的模式过滤器

标签 api rest wildcard routes laravel-4

我上周开始使用 Laravel 3,然后发现了新的 4 版本,我现在正在尝试转换。

我有十多个路由想要传递给特定的 Controller 方法。即“/api/v1/owners/3/dogs/1 或/api/v1/owners/3”运行“myresourcecontroller@processRequest”

在 Laravel 3 中我可以使用这个:(注意 * 通配符)

Route::any('api/v1/owners*', 'owners@processRequest'); // Process tags resource endpoints

我从文档中找到了这个示例,但它给了我一个错误。我收到 NotFoundHttpException。

//[Pattern Based Filters](http://laravel.com/docs/routing#route-filters)
Route::filter('admin', function()
{
    //
});
Route::when('admin/*', 'admin');

不确定我做错了什么?还有其他方法可以做到这一点吗?

我不想使用 Laravel 4 的 Restful Controller ,因为它们似乎不符合完整的 Restful 设计。即,网址中没有动词。

我已经写好了所有的处理,我只需要能够路由到它。 我需要能够通过 POST/api/v1/owners 或/api/v1/owners/3/dogs 创建新记录 我无法使用/api/v1/owners/create。

我试图避免为每个端点编写路由,即,

Route::any('api/v1/owners/{owner_id}', 'owners@processRequest');
Route::any('api/v1/owners/{owner_id}/dogs/{dog_id}', 'owners@processRequest');

感谢您的帮助

最佳答案

您应该使用resourceful controllers因为它们是构建 API 时的宝贵 Assets 。您描述的端点可以使用资源 Controller 和嵌套资源 Controller 来实现。

Route::resource('owners', 'OwnersController');
Route::resource('owners.dogs', 'OwnersDogsController');

允许您使用POST localhost/owners创建一个所有者,并使用POST localhost/owners/3/dogs在所有者上创建一只狗。

然后,您可以将这些路由包装在路由组中以获得 api/v1 前缀。

Route::group(['prefix' => 'api/v1'], function()
{
    Route::resource('owners', 'OwnersController');
    Route::resource('owners.dogs', 'OwnersDogsController');
});

关于api - laravel 4 使用通配符的模式过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945824/

相关文章:

java - 创建一个API以运行版本检查

c# - 如何从 C# 调用 Acrobat 功能 OCR?

javascript - Spotify API - 创建临时播放列表

java - 与 Camel 集成的基于 REST 的服务中的 API 版本管理

rest - Backbone.js 和 Flask RESTful API(仅限 OPTIONS 请求)

javascript - 在 Angular 中读取对象内的数组

javascript - Angular $location 更改后会返回

wildcard - 获取通配符 arm 的值

Jquery 通配符

Linux 查找命令