重要通知: Laravel + 小程序的开源电商版本源码已经在 github 上拉,欢迎提交 issue 和 star :)
开源电商 Server 端: Laravel API源码
开源电商 client 端:小程序源码
Dingo API 简介
Dingo API 为开发者提供了一整套工具以便帮助你轻松、快捷的构建自己的API,这些工具包括:
- 多用户认证适配
- API版本
- API请求频率限制
- 响应转化和格式化
- 错误及异常处理
- 内部请求
- API文档
安装
系统要求
根据 dingo/api
的 composer.json
文件,至少需要 PHP7.0 及以上版本。
安装
手动修改 composer.json
在 require
最后一行添加 "dingo/api": "2.0.0-alpha1"
,然后执行 composer update
命令。
"require": {
"dingo/api": "2.0.0-alpha1"
}
如果安装速度较慢,请使用国内镜像源:
phpcomposer源码已经默认配置国内镜像源
composer update
命令会更新
composer.json
中所有的
package
Laravel
如果你想在配置文件中改变一些配置,你可以使用下面的 Artisan 命令发布配置文件
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
Facades
这个包提供了两个 facades。你可以随意添加任何一个
Dingo\Api\Facade\API
这是一个用于api调度的 facade,当然,它也为这个包的其他方法提供辅助方法。
Dingo\Api\Facade\Route
这是一个用于 API 路由的 facade,可以用作获取当前路由,请求,检查当前路由名称等。
目前我们暂时不需要使用这两个 facades.
配置
config/api.php
已经提供了一套默认的配置,关于 dingo/api
的各项配置项可以通过官方文档(Configuration)了解。
本次教程中,我们只需要通过 .env
文件添加以下两项配置即可:
API_PREFIX=api #前缀名称
API_DEBUG=true #开启debug模式
请自行在
.env
文件中添加,
.env
文件是不加入 git 进行版本控制。
Hello World
接下来将通过 API 来返回 Hello World
来验证 Dingo API 知否正确安装成功。
注册路由
为 server module
创建 RouteServiceProvider
class 文件和 api.php
api-tutorial-source
├── app
├── ...
└── modules
└── server
├── composer.json
├── src
├── routes
├ └── api.php
└── Providers
├── ServerServiceProvider.php
└── RouteServiceProvider.php
RouteServiceProvider
code
mapApiRoutes()
方法使用 dingo/api 的专属的路由实例来创建一个版本分组
namespace iBrand\Server\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'iBrand\Server\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
//
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
$api = app('Dingo\Api\Routing\Router');
$api->version('v1',
['middleware' => 'api', 'namespace' => $this->namespace], function ($router) {
require __DIR__ . '/../routes/api.php';
});
}
}
注册 RouteServiceProvider
两种注册方式
第一种:在 config/app.php
的 providers
添加
iBrand\Server\Providers\RouteServiceProvider::class,
第二种:在 server module
中的 ServerServiceProvider
的 register()
方法中注册
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->register(RouteServiceProvider::class);
}
在教程中采用第二种注册方式。
添加路由
向 api.php
中添加一条路由,直接返回 hello world
内容
$router->get('helloworld', function (){
return 'hello world';
});
完成
浏览器输入 http://api.ibrand.test/api/helloworld
小结
本章知识点:
- Dingo API 安装配置
- 注册 Dingo 专属版本路由组
- 添加 API 路由
参考资料: