在開發後臺接口如今更多的企業選擇了PHP
來開發後臺接口 固然Python
和NodeJs
不失爲是一種不錯的選擇php
不過這裏就以PHP
爲例 基於Laravel
框架開發後臺API
這裏也是若是你是從事其餘方向想作一些後臺API
開發 均可以去嘗試一下的html
固然實例項目我會不放在個人
github
上僅供參考 @geekGhcmysqlgithub demo地址 https://github.com/GeekGhc/dingo-api-demolaravel
固然前提是安裝PHP
的環境 由於PHP7
不管是從性能仍是之後的推廣度都是首選git
因此若是想去繁從簡的話能夠安裝PHP的集成環境 這裏能夠XAMPP
這裏給出下載地址github
https://www.apachefriends.org/zh_cn/index.html 選擇7.1版本安裝便可sql
固然安裝過程很簡單 但要保證將PHP設置爲環境變量 這樣至少咱們纔可使用php命令shell
安裝結束後 終端執行數據庫
$ php --version
查看到對應的版本便可 apache
接下來就是安裝composer 這是PHP的安裝依賴庫 咱們能夠下載到咱們須要的第三方依賴包
這裏也給出相應的地址 https://getcomposer.org/doc/00-intro.md#downloading-the-composer-executable
對於不一樣的平臺 安裝方式確定不同 不過相對來講在windows
環境下 能夠下載完可執行文件直接安裝便可 安裝系統盤就行
安裝完畢後確保composer依舊在環境變量中 在終端執行
$ composer -V
查看到對應的版本便可
這些關於PHP
的安裝完畢以後 那麼基本就能夠進入到Laravel
的安裝
若是說沒有接觸過Laravel的話能夠這兩種方式其實都是不錯的選擇
使用以前的composer下載Laravel安裝包
$ composer global require "laravel/installer"
請肯定你已將 ~/.composer/vendor/bin
路徑加到 PATH
,只有這樣系統才能找到 laravel
的執行文件
一旦安裝完成,就可使用 laravel new
命令在指定目錄建立一個新的 Laravel
項目,例如:laravel new blog
你也能夠經過 Composer
在命令行運行 create-project
命令來安裝 Laravel
:
$ composer create-project --prefer-dist laravel/laravel blog
爲了後面的演示 這裏我建立了一個新的項目
$ laravel new codespace-api
這裏的項目名隨意 這樣能夠安裝到最近的版本
Sublime
或者PHPStrom
打開項目 打開.env文件
這裏有一小段配置須要改下
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=codespace-api DB_USERNAME=root DB_PASSWORD=password
這裏的後面信息就是修改咱們鏈接的Mysql
數據庫的信息 包括數據庫名 數據庫用戶名和密碼
修改成你本地或者服務器上的數據便可
啓動內置服務器服務
$ php artisan serve
由於這裏咱們只是做爲後臺開發 那麼咱們必須瞭解幾下幾點咱們是須要學習和掌握的
sql
語句的編寫和數據表的設計api
的用戶認證和token
的瞭解首先談下第一個就是接口的書寫規範和設計風格 這個其實在阮一峯的一個文章早就談過 儘管會有點爭議 對於學習
restful api的設計 仍是很值得參考的
在瞭解了api
的設計風格後 再結合咱們日常所使用的第三方的api
接口其實設計起來就是這樣
不過接口的具體設計仍是得根據客戶端的項目需求而定
對於第二個sql
語句的編寫和數據表的設計 這個也就因人而異了 若是有多年的開發經驗 我想一些sql
查詢 包括多表關聯都是很好解決的
在Laravel
中只是語法的不一樣罷了 固然對於多表關聯 在Laravel
會有Eloquent Model
對應的關係能夠很好的解決 這裏只談就用原生的sql語句來編寫咱們的數據信息的話
這裏能夠須要閱讀Laravel 的數據庫操做文檔(給出中文爲了更好的說明 能夠的話仍是看看官方的英文文檔比較好)
這裏給出地址 http://d.laravel-china.org/docs/5.3/queries
這裏能夠找到關於操做數據庫的一些sql
語法
在Laravel數據表的設計能夠對應着Model 也能夠單首創建 若是隻是專一後臺 能夠建立咱們須要的表
全部表的設計內容都是在database/migrations下
一開始是爲咱們建立了users
和password_resets
表的
這裏咱們再去建立一個posts
表的話 在項目終端執行
$ php artisan make:model Lesson -m
這樣就能夠建立咱們所對應的lessons
表 在這個migrations
裏也就是標的遷移文件寫咱們的lessons
表的字段信息
php?start_inline=1 Schema::create('lessonss', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('body'); $table->boolean('free'); $table->timestamps(); });
在Laravel
中咱們能夠去定義個字段的測試信息 也就是咱們的Seeder
在databases/factories/ModelFactory.php
中加入posts
表的字段
$factory->define(App\Lesson::class, function (Faker\Generator $faker) { return [ 'title' => $faker->sentence, 'body' => $faker->paragraph, 'free' => $faker->boolean() ]; });
定義完表的結構 那麼接下來就是遷移咱們的數據表 由於以前已經配置過數據庫的相關信息 因此在項目根目錄
$ php artisan migrate
回到數據庫會看到咱們的數據表
再去生成20條測試數據 打開項目的目錄終端打開tinker
$ php artisan thinerk;
指定命名空間
$ namespace App;
生成20條測試數據
$ factory(Lesson::class,20)->create();
回車便可生成20條測試數據 打開數據庫在lessons
表就能夠看到
爲了方便路由處理 咱們去生成一個控制器 爲了避免和應用混淆 咱們在App
目錄下 新建Api
文件夾
並新建Controllers
和Transformer
目錄爲了存放咱們的控制器和處理字段返回
在Controllers目錄下也新建咱們的控制器基類 能夠模仿着應用控制器裏的
<?php namespace App\Api\Controllers; use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; }
下面的話咱們在這裏的控制器就能夠繼承這個基類
話很少說 生成咱們的LessonsController
在命令行執行
$ php artisan make:controller App\\Api\\Controllers\\LessonsController
下面的可能就是集成Dingo api
和Jwt
認證了 若是沒有用過Laravel
的也沒有關係 能夠結合下面個人博客文章
在composer.json文件裏添加
"dingo/api": "1.0.*@dev"
接着在laravel
項目的config
的app.php
去添加服務
'providers' => [ Dingo\Api\Provider\LaravelServiceProvider::class ]
再去生成相應的配置文件
$ php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
若是須要實現jwt
一樣的也是去安裝頁面 安裝這個package
"require": { "tymon/jwt-auth": "0.5.*" }
添加對應的服務:
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider'
固然也是須要去配置一下他的alias
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class, 'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
生成配置文件
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
生成一個key
$ php artisan jwt:generate
固然在
composer.json
添加完依賴包 須要去下載相關的擴展包 即在項目終端執行composer update
這個時候咱們是在開發的環境下 還需對Dingo
進行相應的配置 在.env
文件裏
API_STANDARDS_TREE=vnd
添加前綴
API_PREFIX=api
填寫版本 這個咱們以前本身寫測試的時候也是提供的v1以此來區別版本
API_VERSION=v1
開啓Debug
模式
API_DEBUG=true
關閉Script
模式
API_STRICT=false
這樣的話咱們安裝就算已經完成了 具體的業務部分在另外一篇文章 Laravel從零開發後臺API(二)
文章涉及到用戶的登陸註冊 以及咱們以前註冊好的Lessson Model
的信息獲取