Php Laravel和多条路线;嵌套的;任务和参数

Php Laravel和多条路线;嵌套的;任务和参数,php,rest,laravel-4,routing,Php,Rest,Laravel 4,Routing,我刚刚开始修补Laravel(PHP新手警报),我对如何在这个框架上实现RESTJSONAPI有疑问 所需的URL路径应为: http://api.mysite.com/APIKEY/FUNCTION/(ARGUMENTS)* 但最好的方法是什么呢 我没有找到足够的解释性指南,因为假设每个功能(身份验证、搜索等)位于不同的路径上 目前,我成功地为所需的数据创建了迁移和模型,并且我还以这种方式设置了一条路线: Route::get('/{apikey}/{function}/{arg1}/{ar

我刚刚开始修补Laravel(PHP新手警报),我对如何在这个框架上实现RESTJSONAPI有疑问

所需的URL路径应为:

http://api.mysite.com/APIKEY/FUNCTION/(ARGUMENTS)*
但最好的方法是什么呢

我没有找到足够的解释性指南,因为假设每个功能(身份验证、搜索等)位于不同的路径上

目前,我成功地为所需的数据创建了迁移和模型,并且我还以这种方式设置了一条路线:

Route::get('/{apikey}/{function}/{arg1}/{arg2}/{arg3?}', 
//The first two arguments are mandatory, the 3rd optional
function($apikey,$function,$arg1,$arg2)
{
        return Response::json(array(
        'status'=>'200'),
        200);
})
->where(array('function'=>'[A-Za-z]+')); 
这应该是正确的行动流程,但我有一些疑问

  • 检查apikey是否有效,如果不返回404 json响应。我如何调用这样的函数,在哪里定义它
  • 如果密钥检查成功,了解需要哪个函数(我应该使用交换机构造还是有更好的方法来实现这一点,比如路由组?在
    route::group
    的所有示例中,都有一个静态前缀,但这里的前缀是apikey,一个变量)
  • 返回数据-如果可用-从数据库获取数据。我认为对于每个函数,我应该编写一个特定的控制器,该控制器使用
    模型
    从数据库获取数据

  • @一,。我想我可能会为此使用路由过滤器,如下所示:

    Route::filter('apikey', function(){
        if (Shared\API::checkIfKeyIsValid(Input::get('key') != true){
            return Shared\Errors::handleError("bad-api-key");
        }
    });
    
    您可以看到此筛选器检查以确保某些会话变量已设置并匹配,如果它返回任何内容,则表示失败,并且不会将用户发送到路由正常运行的位置。你可以这样称呼它:

    Route::get('play/{id}', array('before' => 'loggedin', 'uses' => 'ThingController@doThing'));
    
    @二,。我认为路线组是我构建此结构的方式(如果我理解您的要求)。
    编辑:自从我回答这个问题后,你已经改变了这个问题,因为前缀是一个变量。我会对参数进行重新排序,以便API键位于末尾,或者您可以看看这个,这可能会满足您的需要:

    @三,。数据的返回应通过控制器完成,数据来自模型。可以将其作为视图返回,也可以将其作为JSON返回,如下所示:

    return Response::json($data);
    

    1-如何处理身份验证?调用返回true或false的控制器函数?一点也不清楚。对于身份验证,我只想发送api密钥并对其进行一些检查。在创建身份验证筛选器之前,我应该定义身份验证(密钥检查)功能,但我不知道如何定义:)2-确定3-Ok@Vektor88我更新了#1,希望能更好地解释它。我在一个共享文件夹中构建了我的类,然后这个示例假设我有一个名为“API”的类。我正在调用一个名为“checkIfKeyIsValid”的函数,该函数执行提升操作,如果键有效,则返回
    true
    ,如果键无效,则返回
    false
    。过滤器检查该函数返回的内容,如果它没有返回
    true
    ,它会抛出一个(自定义)错误,因为它说
    return
    ,过滤器失败,路由处理停止。感谢编辑,我开始了解我应该做什么以及面向对象的PHP是如何工作的。但是第2点从一开始就需要变量前缀,我没有做任何更改!
    return Response::json($data);