重要通知: Laravel + 小程序的開源電商版本源碼已經在 github 上拉,歡迎提交 issue 和 star :)
開源電商 Server 端: Laravel API源碼
開源電商 client 端:小程序源碼
Dingo API 爲開發者提供了一整套工具以便幫助你輕鬆、快捷的構建本身的API,這些工具包括:php
根據 dingo/api
的 composer.json
文件,至少須要 PHP7.0 及以上版本。git
手動修改 composer.json
在 require
最後一行添加 "dingo/api": "2.0.0-alpha1"
,而後執行 composer update
命令。github
"require": { "dingo/api": "2.0.0-alpha1" }
若是安裝速度較慢,請使用國內鏡像源: phpcomposer
Packagist 鏡像使用方法
源碼已經默認配置國內鏡像源
composer update
命令會更新composer.json
中全部的package
若是你想在配置文件中改變一些配置,你能夠使用下面的 Artisan 命令發佈配置文件json
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
這個包提供了兩個 facades。你能夠隨意添加任何一個小程序
Dingo\Api\Facade\API
這是一個用於api調度的 facade,固然,它也爲這個包的其餘方法提供輔助方法。api
Dingo\Api\Facade\Route
這是一個用於 API 路由的 facade,能夠用做獲取當前路由,請求,檢查當前路由名稱等。瀏覽器
目前咱們暫時不須要使用這兩個 facades.
config/api.php
已經提供了一套默認的配置,關於 dingo/api
的各項配置項能夠經過官方文檔(Configuration)瞭解。app
本次教程中,咱們只須要經過 .env
文件添加如下兩項配置便可:composer
API_PREFIX=api #前綴名稱 API_DEBUG=true #開啓debug模式
請自行在.env
文件中添加,.env
文件是不加入 git 進行版本控制。
接下來將經過 API 來返回 Hello World
來驗證 Dingo API 知否正確安裝成功。less
爲 server module
建立 RouteServiceProvider
class 文件和 api.php
api-tutorial-source ├── app ├── ... └── modules └── server ├── composer.json ├── src ├── routes ├ └── api.php └── Providers ├── ServerServiceProvider.php └── RouteServiceProvider.php
RouteServiceProvider
codemapApiRoutes()
方法使用 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
本章知識點:
參考資料: