• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解Laravel制作API接口

    需要注意的是:API有它的具体用途,我们应该清楚它是干啥的。访问API的时候应该输入什么。访问过API过后应该得到什么。

    在开始设计API时,我们应该注意这8点。后续的开发计划就围绕着这个进行了。

    1.Restful设计原则

    2.API的命名

    3.API的安全性

    4.API返回数据

    5.图片的处理

    6.返回的提示信息

    7.在线API测试文档

    8.在app启动时,调用一个初始化API获取必要的信息

    用laravel开发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');

    随后的就是去愉快的测试了,这里要测试的API有

    新增一个用户

    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

    打开PostMan

    以上就是详解Laravel制作API接口的详细内容,更多关于Laravel制作API接口的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • Laravel如何实现适合Api的异常处理响应格式
    • Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
    • laravel接管Dingo-api和默认的错误处理方式
    • 在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
    • Laravel实现ApiToken认证请求
    • laravel框架 api自定义全局异常处理方法
    • laravel dingo API返回自定义错误信息的实例
    • laravel 配置路由 api和web定义的路由的区别详解
    • Laravel5.4简单实现app接口Api Token认证方法
    上一篇:php中array_pad()函数用法及实例
    下一篇:PHP实现rar解压读取扩展包小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解Laravel制作API接口 详解,Laravel,制作,API,接口,