Laravel從零開發後臺API(一)

介紹

在開發後臺接口如今更多的企業選擇了PHP來開發後臺接口 固然PythonNodeJs不失爲是一種不錯的選擇php

不過這裏就以PHP爲例 基於Laravel框架開發後臺API 這裏也是若是你是從事其餘方向想作一些後臺API開發 均可以去嘗試一下的html

固然實例項目我會不放在個人github上僅供參考 @geekGhcmysql

github 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安裝

若是說沒有接觸過Laravel的話能夠這兩種方式其實都是不錯的選擇

1.經過Laravel安裝工具

使用以前的composer下載Laravel安裝包

$ composer global require "laravel/installer"

請肯定你已將 ~/.composer/vendor/bin 路徑加到 PATH,只有這樣系統才能找到 laravel 的執行文件

一旦安裝完成,就可使用 laravel new 命令在指定目錄建立一個新的 Laravel 項目,例如:laravel new blog

2.經過 Composer Create-Project

你也能夠經過 Composer 在命令行運行 create-project 命令來安裝 Laravel

$ composer create-project --prefer-dist laravel/laravel blog

Laravel API基本配置

爲了後面的演示 這裏我建立了一個新的項目

$ 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

簡單瞭解Laravel的工做流程

由於這裏咱們只是做爲後臺開發 那麼咱們必須瞭解幾下幾點咱們是須要學習和掌握的

  • 1.接口的書寫規範和設計規則
  • 2.sql語句的編寫和數據表的設計
  • 3.有關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的數據表設計

在Laravel數據表的設計能夠對應着Model 也能夠單首創建 若是隻是專一後臺 能夠建立咱們須要的表

全部表的設計內容都是在database/migrations下 一開始是爲咱們建立了userspassword_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文件夾

並新建ControllersTransformer目錄爲了存放咱們的控制器和處理字段返回

在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 apiJwt認證了 若是沒有用過Laravel的也沒有關係 能夠結合下面個人博客文章

安裝 dingo api

在composer.json文件裏添加

"dingo/api": "1.0.*@dev"

接着在laravel項目的configapp.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的信息獲取

參考個人博客文章

相關文章
相關標籤/搜索