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

Api 使用通配符的laravel 4模式过滤器,api,rest,wildcard,routes,laravel-4,Api,Rest,Wildcard,Routes,Laravel 4,我上周开始使用Laravel3,然后找到了新的4版本,现在我正在尝试转换 我有十几条以上的路线,我想交付给一个特定的控制器方法。i、 例如,“/api/v1/owners/3/dogs/1或/api/v1/owners/3”运行”myresourcecontroller@processRequest" 在Laravel3中,我可以使用以下内容:(注*通配符) 我从文档中找到了这个示例,但它给了我一个错误。我得到一个NotFoundHttpException //[Pattern Based Fi

我上周开始使用Laravel3,然后找到了新的4版本,现在我正在尝试转换

我有十几条以上的路线,我想交付给一个特定的控制器方法。i、 例如,“/api/v1/owners/3/dogs/1或/api/v1/owners/3”运行”myresourcecontroller@processRequest"

在Laravel3中,我可以使用以下内容:(注*通配符)

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

//[Pattern Based Filters](http://laravel.com/docs/routing#route-filters)
Route::filter('admin', function()
{
    //
});
Route::when('admin/*', 'admin');
不知道我做错了什么?还有别的办法吗

我不想使用Laravel4RESTful控制器,因为它们似乎不符合完整的restful设计。i、 例如,url中没有动词

我已经写下了我所有的处理过程,我只需要能够路由到它。 我需要能够通过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');

感谢您提供的任何帮助

我本人没有使用过Laravel,但请尝试
any('api/v1/owners/*',
(请注意星号前的斜杠)。

您应该利用它们,因为它们是构建api时的一大资产。您描述的端点可以使用资源控制器和嵌套资源控制器来实现

Route::resource('owners','OwnersController');
路由::资源('owners.dogs','OwnersDogsController');
将允许您使用
POST-localhost/owners
创建所有者,并使用
POST-localhost/owners/3/dogs
在所有者身上创建狗

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

Route::group(['prefix'=>'api/v1'],function())
{
路由::资源(“所有者”、“所有者控制器”);
路由::资源('owners.dogs','OwnersDogsController');
});

哦,很好。值得一试:)太棒了。谢谢你,杰森。这很有帮助。我将第一行更改为array('prefix'=>'api/v1')。是的,我使用的是PHP5.4语法。:)当我发布到/api/v1/owners/1/dogs/2Aha时,我发现了这个错误(MethodNotAllowedHttpException)。它可以在http协议中拒绝具有子集合id的POST。我将其更改为/api/v1/owners/1/dogs,我们将使用带有子集合id的PUT来更新特定的狗。再次感谢你的帮助,不用担心。如果这是正确的答案,别忘了标记它。
Route::any('api/v1/owners/{owner_id}', 'owners@processRequest');
Route::any('api/v1/owners/{owner_id}/dogs/{dog_id}', 'owners@processRequest');