成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel從零開發(fā)后臺API(一)

selfimpr / 2556人閱讀

摘要:介紹在開發(fā)后臺接口現(xiàn)在更多的企業(yè)選擇了來開發(fā)后臺接口當(dāng)然和不失為是一種不錯的選擇不過這里就以為例基于框架開發(fā)后臺這里也是如果你是從事其他方向想做一些后臺開發(fā)都可以去嘗試一下的當(dāng)然實(shí)例項(xiàng)目我會不放在我的上僅供參考地址前期準(zhǔn)備當(dāng)然前提是安裝

介紹

在開發(fā)后臺接口現(xiàn)在更多的企業(yè)選擇了PHP來開發(fā)后臺接口 當(dāng)然PythonNodeJs不失為是一種不錯的選擇

不過這里就以PHP為例 基于Laravel框架開發(fā)后臺API 這里也是如果你是從事其他方向想做一些后臺API開發(fā) 都可以去嘗試一下的

當(dāng)然實(shí)例項(xiàng)目我會不放在我的github上僅供參考 @geekGhc

github demo地址 https://github.com/GeekGhc/dingo-api-demo

前期準(zhǔn)備

當(dāng)然前提是安裝PHP的環(huán)境 因?yàn)?b>PHP7無論是從性能還是以后的推廣度都是首選

所以如果想去繁從簡的話可以安裝PHP的集成環(huán)境 這里可以XAMPP 這里給出下載地址

https://www.apachefriends.org/zh_cn/index.html 選擇7.1版本安裝即可

當(dāng)然安裝過程很簡單 但要保證將PHP設(shè)置為環(huán)境變量 這樣至少我們才可以使用php命令

安裝結(jié)束后 終端執(zhí)行

$ php --version

查看到對應(yīng)的版本即可

接下來就是安裝composer 這是PHP的安裝依賴庫 我們可以下載到我們需要的第三方依賴包

這里也給出相應(yīng)的地址 https://getcomposer.org/doc/00-intro.md#downloading-the-composer-executable

對于不同的平臺 安裝方式肯定不一樣 不過相對來說在windows環(huán)境下 可以下載完可執(zhí)行文件直接安裝即可 安裝系統(tǒng)盤就行

安裝完畢后確保composer依舊在環(huán)境變量中 在終端執(zhí)行

$ composer -V

查看到對應(yīng)的版本即可

這些關(guān)于PHP的安裝完畢之后 那么基本就可以進(jìn)入到Laravel的安裝

Laravel安裝

如果說沒有接觸過Laravel的話可以這兩種方式其實(shí)都是不錯的選擇

1.通過Laravel安裝工具

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

$ composer global require "laravel/installer"

請確定你已將 ~/.composer/vendor/bin 路徑加到 PATH,只有這樣系統(tǒng)才能找到 laravel 的執(zhí)行文件

一旦安裝完成,就可以使用 laravel new 命令在指定目錄創(chuàng)建一個新的 Laravel 項(xiàng)目,例如:laravel new blog

2.通過 Composer Create-Project

你也可以通過 Composer 在命令行運(yùn)行 create-project 命令來安裝 Laravel

$ composer create-project --prefer-dist laravel/laravel blog
Laravel API基本配置

為了后面的演示 這里我創(chuàng)建了一個新的項(xiàng)目

$ laravel new codespace-api

這里的項(xiàng)目名隨意 這樣可以安裝到最近的版本

Sublime或者PHPStrom打開項(xiàng)目 打開.env文件
這里有一小段配置需要改下

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=codespace-api
DB_USERNAME=root
DB_PASSWORD=password

這里的后面信息就是修改我們連接的Mysql數(shù)據(jù)庫的信息 包括數(shù)據(jù)庫名 數(shù)據(jù)庫用戶名和密碼

修改為你本地或者服務(wù)器上的數(shù)據(jù)即可

啟動內(nèi)置服務(wù)器服務(wù)

$ php artisan serve
簡單了解Laravel的工作流程

因?yàn)檫@里我們只是作為后臺開發(fā) 那么我們必須了解幾下幾點(diǎn)我們是需要學(xué)習(xí)和掌握的

1.接口的書寫規(guī)范和設(shè)計(jì)規(guī)則

2.sql語句的編寫和數(shù)據(jù)表的設(shè)計(jì)

3.有關(guān)api的用戶認(rèn)證和token的了解

首先談下第一個就是接口的書寫規(guī)范和設(shè)計(jì)風(fēng)格 這個其實(shí)在阮一峰的一個文章早就談過 盡管會有點(diǎn)爭議 對于學(xué)習(xí)

restful api的設(shè)計(jì) 還是很值得參考的

在了解了api的設(shè)計(jì)風(fēng)格后 再結(jié)合我們平常所使用的第三方的api接口其實(shí)設(shè)計(jì)起來就是這樣

不過接口的具體設(shè)計(jì)還是得根據(jù)客戶端的項(xiàng)目需求而定

對于第二個sql語句的編寫和數(shù)據(jù)表的設(shè)計(jì) 這個也就因人而異了 如果有多年的開發(fā)經(jīng)驗(yàn) 我想一些sql查詢 包括多表關(guān)聯(lián)都是很好解決的

Laravel中只是語法的不同罷了 當(dāng)然對于多表關(guān)聯(lián) 在Laravel會有Eloquent Model對應(yīng)的關(guān)系可以很好的解決 這里只談就用原生的sql語句來編寫我們的數(shù)據(jù)信息的話

這里可以需要閱讀Laravel 的數(shù)據(jù)庫操作文檔(給出中文為了更好的說明 可以的話還是看看官方的英文文檔比較好)

這里給出地址 http://d.laravel-china.org/docs/5.3/queries

這里可以找到關(guān)于操作數(shù)據(jù)庫的一些sql語法

Laravel的數(shù)據(jù)表設(shè)計(jì)

在Laravel數(shù)據(jù)表的設(shè)計(jì)可以對應(yīng)著Model 也可以多帶帶創(chuàng)建 如果只是專注后臺 可以創(chuàng)建我們需要的表

所有表的設(shè)計(jì)內(nèi)容都是在database/migrations下 一開始是為我們創(chuàng)建了userspassword_resets表的

這里我們再去創(chuàng)建一個posts表的話 在項(xiàng)目終端執(zhí)行

$ php artisan make:model Lesson -m

這樣就可以創(chuàng)建我們所對應(yīng)的lessons表 在這個migrations里也就是標(biāo)的遷移文件寫我們的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(AppLesson::class, function (FakerGenerator $faker) {
    return [
        "title" => $faker->sentence,
        "body" => $faker->paragraph,
        "free" => $faker->boolean()
    ];
});

定義完表的結(jié)構(gòu) 那么接下來就是遷移我們的數(shù)據(jù)表 因?yàn)橹耙呀?jīng)配置過數(shù)據(jù)庫的相關(guān)信息 所以在項(xiàng)目根目錄

$ php artisan migrate

回到數(shù)據(jù)庫會看到我們的數(shù)據(jù)表

再去生成20條測試數(shù)據(jù) 打開項(xiàng)目的目錄終端打開tinker

$ php artisan thinerk;

指定命名空間

$ namespace App;

生成20條測試數(shù)據(jù)

$ factory(Lesson::class,20)->create();

回車即可生成20條測試數(shù)據(jù) 打開數(shù)據(jù)庫在lessons表就可以看到

為了方便路由處理 我們?nèi)ド梢粋€控制器 為了不和應(yīng)用混淆 我們在App目錄下 新建Api文件夾

并新建ControllersTransformer目錄為了存放我們的控制器和處理字段返回

在Controllers目錄下也新建我們的控制器基類 可以模仿著應(yīng)用控制器里的


下面的話我們在這里的控制器就可以繼承這個基類

話不多說 生成我們的LessonsController 在命令行執(zhí)行

$ php artisan make:controller AppApiControllersLessonsController

下面的可能就是集成Dingo apiJwt認(rèn)證了 如果沒有用過Laravel的也沒有關(guān)系 可以結(jié)合下面我的博客文章

安裝 dingo api

在composer.json文件里添加

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

接著在laravel項(xiàng)目的configapp.php去添加服務(wù)

"providers" => [
    DingoApiProviderLaravelServiceProvider::class
]

再去生成相應(yīng)的配置文件

$ php artisan vendor:publish --provider="DingoApiProviderLaravelServiceProvider"

如果需要實(shí)現(xiàn)jwt 同樣的也是去安裝頁面 安裝這個package

"require": {
    "tymon/jwt-auth": "0.5.*"
}

添加對應(yīng)的服務(wù):

"TymonJWTAuthProvidersJWTAuthServiceProvider"

當(dāng)然也是需要去配置一下他的alias

"JWTAuth" => TymonJWTAuthFacadesJWTAuth::class,
"JWTFactory" => TymonJWTAuthFacadesJWTFactory::class

生成配置文件

$ php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"

生成一個key

$ php artisan jwt:generate

當(dāng)然在composer.json添加完依賴包 需要去下載相關(guān)的擴(kuò)展包 即在項(xiàng)目終端執(zhí)行 composer update

使用

這個時候我們是在開發(fā)的環(huán)境下 還需對Dingo進(jìn)行相應(yīng)的配置 在.env文件里

API_STANDARDS_TREE=vnd

添加前綴

API_PREFIX=api

填寫版本 這個我們之前自己寫測試的時候也是提供的v1以此來區(qū)別版本

API_VERSION=v1

開啟Debug模式

API_DEBUG=true

關(guān)閉Script模式

API_STRICT=false 

這樣的話我們安裝就算已經(jīng)完成了 具體的業(yè)務(wù)部分在另一篇文章 Laravel從零開發(fā)后臺API(二)

文章涉及到用戶的登錄注冊 以及我們之前注冊好的Lessson Model的信息獲取

參考我的博客文章

Laravel API開發(fā)初探

Laravel API結(jié)合Dingo API和JWT

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25586.html

相關(guān)文章

  • Laravel從零開發(fā)后臺API(二)

    摘要:之前我們已經(jīng)準(zhǔn)備好了基本的安裝過程現(xiàn)在我們?nèi)?shí)現(xiàn)一下具體的業(yè)務(wù)部分用戶的登錄與注冊對于用戶注冊這對于一款應(yīng)用來說再正常不過了為了接下來我們的效果我們可以去生成一個即在項(xiàng)目終端執(zhí)行生成用戶之后我們暫時先不去編輯字段后面我們需要用到時再加返回字 之前我們已經(jīng)準(zhǔn)備好了基本的安裝過程 現(xiàn)在我們?nèi)?shí)現(xiàn)一下具體的業(yè)務(wù)部分 用戶的登錄與注冊 對于用戶注冊 這對于一款應(yīng)用來說再正常不過了 為了接下來...

    Nekron 評論0 收藏0
  • 后端開發(fā)從零個移動應(yīng)用(后端篇)

    摘要:后端開發(fā)的疑惑后端開發(fā)最常面對的一個問題性能高并發(fā)等等。而到了時代,在方面有了前后端分離概念移動后端更是無力渲染天然前后端分離。 先來上一張前端頁面的效果圖(Vue + Vux + Vuex + Vue-Router)。showImg(https://segmentfault.com/img/remote/1460000010207850); 第一次做gif 沒什么經(jīng)驗(yàn),太大了。加載...

    codergarden 評論0 收藏0
  • 小白的邊學(xué)邊寫,個基于laravel的APP接口【API】(

    摘要:前期準(zhǔn)備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣埽俏易钕矚g的框架了,沒有之一。 前期準(zhǔn)備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現(xiàn)在開...

    Nosee 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<