有人使用过 Dingo/API 管理 API 的组件么 求助

Dingo/api 运行报错


本人最近在做的项目,涉及到给手机app提供api,想尝试下 https://github.com/dingo/api/ 来管理api,按照github上的wiki一路next,结果还没深入就报错,不知道哪里出问题,请各位路过的一起帮忙看看。

开发环境

  • php 5.6
  • nginx 1.7

composer 配置

  "require": {
    "php"                                 : ">=5.5.9",
    "laravel/framework"                   : "5.1.*",
    "lucadegasperi/oauth2-server-laravel" : "4.1.x@dev",
    "tymon/jwt-auth"                      : "0.5.*",
    "dingo/api"                           : "0.9.*@dev"
  },

要是按照wiki上的 "dingo/api": "0.9.*" 根本找不到包的版本,所以我加上@dev 总算可以下载

增加providers

'providers' => [
    Dingo\Api\Provider\LaravelServiceProvider::class
]

生成api配置文件

php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"

扩展验证方法

按照wiki原文增加验证扩展提供者,结果一加上去就报错

Authentication Providers
By default only basic authentication is enabled. Authentication is covered in more detail in a later chapter.
You must configure this in a published configuration file or in your bootstrap file.

$app['Dingo\Api\Auth\Auth']->extend('oauth', function ($app) {
return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
});

按照wiki,我在bootstrap/app.php 内增加了上面的代码,不知道是加错地方呢,还是版本有问题,访问首页直接报错

报错结果

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Dingo\Api\Contract\Routing\Adapter] is not instantiable.' in E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php:744 Stack trace: #0 E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php(626): Illuminate\Container\Container->build('Dingo\\Api\\Contr...', Array) #1 E:\site\project\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(674): Illuminate\Container\Container->make('Dingo\\Api\\Contr...', Array) #2 E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php(837): Illuminate\Foundation\Application->make('Dingo\\Api\\Contr...') #3 E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php(800): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter)) #4 E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php(771): Illuminate\Contain in E:\site\project\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 744

从报错信息来看,提示 Dingo\Api\Contract\Routing\Adapter 不能 实例化,但是wiki上这么描述,实际却行不通,难道是我打开方式不对?还是姿势不多,坑啊,谁能告诉我咩,咋回事

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

看了下时间,过去的比较久了,这个问题不晓得你还在关注没有,官方文档里描述的确实不够明晰,尝试修改 config/api.php 文件 'auth' => [
'jwt' => function($app){
return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
}
],
停止报错了,不知道是不是应该这么操作,楼主是如何解决的?

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!