摘要:介紹在開發(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)然Python和NodeJs不失為是一種不錯的選擇
不過這里就以PHP為例 基于Laravel框架開發(fā)后臺API 這里也是如果你是從事其他方向想做一些后臺API開發(fā) 都可以去嘗試一下的
前期準(zhǔn)備當(dāng)然實(shí)例項(xiàng)目我會不放在我的github上僅供參考 @geekGhc
github demo地址 https://github.com/GeekGhc/dingo-api-demo
當(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 blogLaravel 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)建了users和password_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文件夾
并新建Controllers和Transformer目錄為了存放我們的控制器和處理字段返回
在Controllers目錄下也新建我們的控制器基類 可以模仿著應(yīng)用控制器里的
下面的話我們在這里的控制器就可以繼承這個基類
話不多說 生成我們的LessonsController 在命令行執(zhí)行
$ php artisan make:controller AppApiControllersLessonsController下面的可能就是集成Dingo api和Jwt認(rèn)證了 如果沒有用過Laravel的也沒有關(guān)系 可以結(jié)合下面我的博客文章
安裝 dingo api在composer.json文件里添加
"dingo/api": "1.0.*@dev"接著在laravel項(xiàng)目的config的app.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
摘要:之前我們已經(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)用來說再正常不過了 為了接下來...
摘要:后端開發(fā)的疑惑后端開發(fā)最常面對的一個問題性能高并發(fā)等等。而到了時代,在方面有了前后端分離概念移動后端更是無力渲染天然前后端分離。 先來上一張前端頁面的效果圖(Vue + Vux + Vuex + Vue-Router)。showImg(https://segmentfault.com/img/remote/1460000010207850); 第一次做gif 沒什么經(jīng)驗(yàn),太大了。加載...
摘要:前期準(zhǔn)備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣埽俏易钕矚g的框架了,沒有之一。 前期準(zhǔn)備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現(xiàn)在開...
閱讀 2794·2021-11-22 13:54
閱讀 2731·2021-10-14 09:42
閱讀 4098·2021-09-28 09:47
閱讀 2197·2021-09-03 10:28
閱讀 1234·2021-07-26 23:38
閱讀 2590·2019-08-30 15:54
閱讀 2663·2019-08-29 16:35
閱讀 1453·2019-08-29 15:42