我想用laravel创建Web服务

时间:2014-08-28 08:02:11

标签: php web-services laravel laravel-4

我想用laravel创建Web服务,但我不这样做。

我使用这样的路线:

Route::group(array('prefix' => 'api/v1', 'before' => 'basic.outh'), function(){

    Route::resource('url',      'UrlController@index');
    Route::resource('show',     'UrlController@show');
    Route::resource('destroy',  'UrlController@destroy');

});

但是这个路由过滤器只想要用户名,如下所示:

Route::filter('auth.basic', function()
{
    return Auth::basic("username");
});

我想让我的系统像Codeigniter RESTful api一样。这可能吗?

你能给我推荐一些例子吗?

1 个答案:

答案 0 :(得分:6)

是的,绝对有可能。

就个人而言,我建议使用OAuth2进行基于令牌的身份验证,这更适合于API。 OAuth有一个相当陡峭的学习曲线,但幸运的是,Laravel(一个OAuth2包装器)有一个包非常简单,因为它会为你生成和验证令牌。

<强>封装
https://github.com/lucadegasperi/oauth2-server-laravel

示例:
我有类似的设置。下面的代码并不意味着要通过文档替换,但这类似于使用此包装器的路径。

Route::group(['prefix' => 'api/v1', 'before' => 'apiErrors'], function()
{

    // Returns a valid token based on grant_type and credentials when a request is made to the accessToken endpoint. 
    // I use 'client_credentials' and 'refresh_token' for APIs serving mobile apps, for example.  You can use that, or roll your own.
    Route::post('accessToken', function()
    {

        return AuthorizationServer::performAccessTokenFlow();

    });

    // 'oauth' filter makes sure there is a valid token present
    Route::group(['before' => 'oauth'], function()
    {
        // Your protected endpoints
        Route::resource('url',      'UrlController@index');
        Route::resource('show',     'UrlController@show');
        Route::resource('destroy',  'UrlController@destroy');

    });

});