基于laravel制作API接口

互联网 20-5-28

基于laravel制作API接口

1.Restful设计原则2.API的命名3.API的安全性4.API返回数据5.图片的处理6.返回的提示信息7.在线API测试文档8.在app启动时,调用一个初始化API获取必要的信息

就在我上愁着要不要从零开始学习的时候,找到了这个插件dingo/api那么现在就来安装吧!首先一定是下载的没错在新安装好的laravel的composer.json加入如下内容

然后打开cmd执行

composer update

在config/app.php中的providers里添加

App\Providers\OAuthServiceProvider::class, Dingo\Api\Provider\LaravelServiceProvider::class, LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class, LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,

在aliases里添加

'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,

修改app/Http/Kernel.php文件里的内容

protected $middleware = [\LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class, ]; protected $routeMiddleware = [   'oauth' => \LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware::class,   'oauth-user' => \LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware::class,   'oauth-client' => \LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware::class,   'check-authorization-params' => \LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware::class,   'csrf' => \App\Http\Middleware\VerifyCsrfToken::class, ];

然后执行

php artisan vendor:publish

php artisan migrate

在.env文件里添加这些配置

API_STANDARDS_TREE=x API_SUBTYPE=rest API_NAME=REST API_PREFIX=api API_VERSION=v1 API_CONDITIONAL_REQUEST=true API_STRICT=false API_DEBUG=true API_DEFAULT_FORMAT=json

修改app\config\oauth2.php文件

'grant_types' => [   'password' => [     'class' => 'League\OAuth2\Server\Grant\PasswordGrant',     'access_token_ttl' => 604800,     'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify',   ], ],

新建一个服务提供者,在app/Providers下新建OAuthServiceProvider.php文件内容如下

namespace App\Providers;   use Dingo\Api\Auth\Auth; use Dingo\Api\Auth\Provider\OAuth2; use Illuminate\Support\ServiceProvider;   class OAuthServiceProvider extends ServiceProvider {   public function boot()   {     $this->app[Auth::class]->extend('oauth', function ($app) {       $provider = new OAuth2($app['oauth2-server.authorizer']->getChecker());         $provider->setUserResolver(function ($id) {         // Logic to return a user by their ID.       });         $provider->setClientResolver(function ($id) {         // Logic to return a client by their ID.       });         return $provider;     });   }     public function register()   {     //   } }

然后打开routes.php添加相关路由

//Get access_token Route::post('oauth/access_token', function() {    return Response::json(Authorizer::issueAccessToken()); });   //Create a test user, you don't need this if you already have. Route::get('/register',function(){   $user = new App\User();    $user->name="tester";    $user->email="test@test.com";    $user->password = \Illuminate\Support\Facades\Hash::make("password");    $user->save(); }); $api = app('Dingo\Api\Routing\Router');   //Show user info via restful service. $api->version('v1', ['namespace' => 'App\Http\Controllers'], function ($api) {   $api->get('users', 'UsersController@index');   $api->get('users/{id}', 'UsersController@show'); });   //Just a test with auth check. $api->version('v1', ['middleware' => 'api.auth'] , function ($api) {   $api->get('time', function () {     return ['now' => microtime(), 'date' => date('Y-M-D',time())];   }); });

分别创建BaseController.php和UsersController.php内容如下

//BaseController namespace App\Http\Controllers;   use Dingo\Api\Routing\Helpers; use Illuminate\Routing\Controller;   class BaseController extends Controller {   use Helpers; }   //UsersController namespace App\Http\Controllers;   use App\User; use App\Http\Controllers\Controller;   class UsersController extends BaseController {     public function index()   {     return User::all();   }     public function show($id)   {     $user = User::findOrFail($id);     // 数组形式     return $this->response->array($user->toArray());   } }

随后在app/Http/Controllers/Auth/下创建PasswordGrantVerifier.php内容如下

namespace App\Http\Controllers\Auth; use Illuminate\Support\Facades\Auth;   class PasswordGrantVerifier {   public function verify($username, $password)   {      $credentials = [       'email'  => $username,       'password' => $password,      ];        if (Auth::once($credentials)) {        return Auth::user()->id;      }        return false;   } }

打开数据库的oauth_client表新增一条client数据

INSERT INTO 'oauth_clients' ('id', 'secret', 'name', 'created_at', 'updated_at') VALUES ('1', '2', 'Main website', '2016–03–13 23:00:00', '0000–00–00 00:00:00');

新增一个用户

http://localhost/register

读取所有用户信息

http://localhost/api/users

只返回用户id为4的信息

http://localhost/api/users/4

获取access_token

http://localhost/oauth/access_token

利用token值获得时间,token值正确才能返回正确值

http://localhost/api/time

更多laravel框架技术文章,请访问laravel教程!

以上就是基于laravel制作API接口的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: api
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:laravel安装jwt-auth及验证(实例)

相关资讯