Dingo API 安裝 — iBrand Laravel API 0.6

重要通知: Laravel + 小程序的開源電商版本源碼已經在 github 上拉,歡迎提交 issue 和 star :)
開源電商 Server 端: Laravel API源碼
開源電商 client 端:小程序源碼

Dingo API 簡介

Dingo API 爲開發者提供了一整套工具以便幫助你輕鬆、快捷的構建本身的API,這些工具包括:php

  • 多用戶認證適配
  • API版本
  • API請求頻率限制
  • 響應轉化和格式化
  • 錯誤及異常處理
  • 內部請求
  • API文檔

安裝

系統要求

根據 dingo/apicomposer.json 文件,至少須要 PHP7.0 及以上版本。git

安裝

手動修改 composer.jsonrequire 最後一行添加 "dingo/api": "2.0.0-alpha1",而後執行 composer update 命令。github

"require": {
    "dingo/api": "2.0.0-alpha1"
}
若是安裝速度較慢,請使用國內鏡像源: phpcomposer
Packagist 鏡像使用方法
源碼已經默認配置國內鏡像源

圖片描述

composer update 命令會更新 composer.json 中全部的 package

Laravel

若是你想在配置文件中改變一些配置,你能夠使用下面的 Artisan 命令發佈配置文件json

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

圖片描述

Facades

這個包提供了兩個 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 進行版本控制。

Hello World

接下來將經過 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 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.phpproviders 添加

iBrand\Server\Providers\RouteServiceProvider::class,

第二種:在 server module 中的 ServerServiceProviderregister() 方法中註冊

/**
     * 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 路由

參考資料:

Creating API Endpoints

相關文章
相關標籤/搜索