摘要:介紹在開(kāi)發(fā)后臺(tái)接口現(xiàn)在更多的企業(yè)選擇了來(lái)開(kāi)發(fā)后臺(tái)接口當(dāng)然和不失為是一種不錯(cuò)的選擇不過(guò)這里就以為例基于框架開(kāi)發(fā)后臺(tái)這里也是如果你是從事其他方向想做一些后臺(tái)開(kāi)發(fā)都可以去嘗試一下的當(dāng)然實(shí)例項(xiàng)目我會(huì)不放在我的上僅供參考地址前期準(zhǔn)備當(dāng)然前提是安裝
介紹
在開(kāi)發(fā)后臺(tái)接口現(xiàn)在更多的企業(yè)選擇了PHP來(lái)開(kāi)發(fā)后臺(tái)接口 當(dāng)然Python和NodeJs不失為是一種不錯(cuò)的選擇
不過(guò)這里就以PHP為例 基于Laravel框架開(kāi)發(fā)后臺(tái)API 這里也是如果你是從事其他方向想做一些后臺(tái)API開(kāi)發(fā) 都可以去嘗試一下的
前期準(zhǔn)備當(dāng)然實(shí)例項(xiàng)目我會(huì)不放在我的github上僅供參考 @geekGhc
github demo地址 https://github.com/GeekGhc/dingo-api-demo
當(dāng)然前提是安裝PHP的環(huán)境 因?yàn)?b>PHP7無(wú)論是從性能還是以后的推廣度都是首選
所以如果想去繁從簡(jiǎn)的話可以安裝PHP的集成環(huán)境 這里可以XAMPP 這里給出下載地址
https://www.apachefriends.org/zh_cn/index.html 選擇7.1版本安裝即可
當(dāng)然安裝過(guò)程很簡(jiǎn)單 但要保證將PHP設(shè)置為環(huán)境變量 這樣至少我們才可以使用php命令
安裝結(jié)束后 終端執(zhí)行
$ php --version
查看到對(duì)應(yīng)的版本即可
接下來(lái)就是安裝composer 這是PHP的安裝依賴庫(kù) 我們可以下載到我們需要的第三方依賴包
這里也給出相應(yīng)的地址 https://getcomposer.org/doc/00-intro.md#downloading-the-composer-executable
對(duì)于不同的平臺(tái) 安裝方式肯定不一樣 不過(guò)相對(duì)來(lái)說(shuō)在windows環(huán)境下 可以下載完可執(zhí)行文件直接安裝即可 安裝系統(tǒng)盤(pán)就行
安裝完畢后確保composer依舊在環(huán)境變量中 在終端執(zhí)行
$ composer -V
查看到對(duì)應(yīng)的版本即可
這些關(guān)于PHP的安裝完畢之后 那么基本就可以進(jìn)入到Laravel的安裝
Laravel安裝如果說(shuō)沒(méi)有接觸過(guò)Laravel的話可以這兩種方式其實(shí)都是不錯(cuò)的選擇
1.通過(guò)Laravel安裝工具使用之前的composer下載Laravel安裝包
$ composer global require "laravel/installer"
請(qǐng)確定你已將 ~/.composer/vendor/bin 路徑加到 PATH,只有這樣系統(tǒng)才能找到 laravel 的執(zhí)行文件
一旦安裝完成,就可以使用 laravel new 命令在指定目錄創(chuàng)建一個(gè)新的 Laravel 項(xiàng)目,例如:laravel new blog
2.通過(guò) Composer Create-Project你也可以通過(guò) Composer 在命令行運(yùn)行 create-project 命令來(lái)安裝 Laravel:
$ composer create-project --prefer-dist laravel/laravel blogLaravel API基本配置
為了后面的演示 這里我創(chuàng)建了一個(gè)新的項(xiàng)目
$ laravel new codespace-api
這里的項(xiàng)目名隨意 這樣可以安裝到最近的版本
Sublime或者PHPStrom打開(kāi)項(xiàng)目 打開(kāi).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ù)庫(kù)的信息 包括數(shù)據(jù)庫(kù)名 數(shù)據(jù)庫(kù)用戶名和密碼
修改為你本地或者服務(wù)器上的數(shù)據(jù)即可
啟動(dòng)內(nèi)置服務(wù)器服務(wù)
$ php artisan serve簡(jiǎn)單了解Laravel的工作流程
因?yàn)檫@里我們只是作為后臺(tái)開(kāi)發(fā) 那么我們必須了解幾下幾點(diǎn)我們是需要學(xué)習(xí)和掌握的
1.接口的書(shū)寫(xiě)規(guī)范和設(shè)計(jì)規(guī)則
2.sql語(yǔ)句的編寫(xiě)和數(shù)據(jù)表的設(shè)計(jì)
3.有關(guān)api的用戶認(rèn)證和token的了解
首先談下第一個(gè)就是接口的書(shū)寫(xiě)規(guī)范和設(shè)計(jì)風(fēng)格 這個(gè)其實(shí)在阮一峰的一個(gè)文章早就談過(guò) 盡管會(huì)有點(diǎn)爭(zhēng)議 對(duì)于學(xué)習(xí)
restful api的設(shè)計(jì) 還是很值得參考的
在了解了api的設(shè)計(jì)風(fēng)格后 再結(jié)合我們平常所使用的第三方的api接口其實(shí)設(shè)計(jì)起來(lái)就是這樣
不過(guò)接口的具體設(shè)計(jì)還是得根據(jù)客戶端的項(xiàng)目需求而定
對(duì)于第二個(gè)sql語(yǔ)句的編寫(xiě)和數(shù)據(jù)表的設(shè)計(jì) 這個(gè)也就因人而異了 如果有多年的開(kāi)發(fā)經(jīng)驗(yàn) 我想一些sql查詢 包括多表關(guān)聯(lián)都是很好解決的
在Laravel中只是語(yǔ)法的不同罷了 當(dāng)然對(duì)于多表關(guān)聯(lián) 在Laravel會(huì)有Eloquent Model對(duì)應(yīng)的關(guān)系可以很好的解決 這里只談就用原生的sql語(yǔ)句來(lái)編寫(xiě)我們的數(shù)據(jù)信息的話
這里可以需要閱讀Laravel 的數(shù)據(jù)庫(kù)操作文檔(給出中文為了更好的說(shuō)明 可以的話還是看看官方的英文文檔比較好)
這里給出地址 http://d.laravel-china.org/docs/5.3/queries
這里可以找到關(guān)于操作數(shù)據(jù)庫(kù)的一些sql語(yǔ)法
Laravel的數(shù)據(jù)表設(shè)計(jì)在Laravel數(shù)據(jù)表的設(shè)計(jì)可以對(duì)應(yīng)著Model 也可以多帶帶創(chuàng)建 如果只是專注后臺(tái) 可以創(chuàng)建我們需要的表
所有表的設(shè)計(jì)內(nèi)容都是在database/migrations下 一開(kāi)始是為我們創(chuàng)建了users和password_resets表的
這里我們?cè)偃?chuàng)建一個(gè)posts表的話 在項(xiàng)目終端執(zhí)行
$ php artisan make:model Lesson -m
這樣就可以創(chuàng)建我們所對(duì)應(yīng)的lessons表 在這個(gè)migrations里也就是標(biāo)的遷移文件寫(xiě)我們的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中我們可以去定義個(gè)字段的測(cè)試信息 也就是我們的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) 那么接下來(lái)就是遷移我們的數(shù)據(jù)表 因?yàn)橹耙呀?jīng)配置過(guò)數(shù)據(jù)庫(kù)的相關(guān)信息 所以在項(xiàng)目根目錄
$ php artisan migrate
回到數(shù)據(jù)庫(kù)會(huì)看到我們的數(shù)據(jù)表
再去生成20條測(cè)試數(shù)據(jù) 打開(kāi)項(xiàng)目的目錄終端打開(kāi)tinker
$ php artisan thinerk;
指定命名空間
$ namespace App;
生成20條測(cè)試數(shù)據(jù)
$ factory(Lesson::class,20)->create();
回車即可生成20條測(cè)試數(shù)據(jù) 打開(kāi)數(shù)據(jù)庫(kù)在lessons表就可以看到
為了方便路由處理 我們?nèi)ド梢粋€(gè)控制器 為了不和應(yīng)用混淆 我們?cè)?b>App目錄下 新建Api文件夾
并新建Controllers和Transformer目錄為了存放我們的控制器和處理字段返回
在Controllers目錄下也新建我們的控制器基類 可以模仿著應(yīng)用控制器里的
下面的話我們?cè)谶@里的控制器就可以繼承這個(gè)基類
話不多說(shuō) 生成我們的LessonsController 在命令行執(zhí)行
$ php artisan make:controller AppApiControllersLessonsController下面的可能就是集成Dingo api和Jwt認(rèn)證了 如果沒(méi)有用過(guò)Laravel的也沒(méi)有關(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 同樣的也是去安裝頁(yè)面 安裝這個(gè)package
"require": { "tymon/jwt-auth": "0.5.*" }添加對(duì)應(yīng)的服務(wù):
"TymonJWTAuthProvidersJWTAuthServiceProvider"當(dāng)然也是需要去配置一下他的alias
"JWTAuth" => TymonJWTAuthFacadesJWTAuth::class, "JWTFactory" => TymonJWTAuthFacadesJWTFactory::class生成配置文件
$ php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"生成一個(gè)key
$ php artisan jwt:generate使用當(dāng)然在composer.json添加完依賴包 需要去下載相關(guān)的擴(kuò)展包 即在項(xiàng)目終端執(zhí)行 composer update
這個(gè)時(shí)候我們是在開(kāi)發(fā)的環(huán)境下 還需對(duì)Dingo進(jìn)行相應(yīng)的配置 在.env文件里
API_STANDARDS_TREE=vnd添加前綴
API_PREFIX=api填寫(xiě)版本 這個(gè)我們之前自己寫(xiě)測(cè)試的時(shí)候也是提供的v1以此來(lái)區(qū)別版本
API_VERSION=v1開(kāi)啟Debug模式
API_DEBUG=true關(guān)閉Script模式
API_STRICT=false這樣的話我們安裝就算已經(jīng)完成了 具體的業(yè)務(wù)部分在另一篇文章 Laravel從零開(kāi)發(fā)后臺(tái)API(二)
文章涉及到用戶的登錄注冊(cè) 以及我們之前注冊(cè)好的Lessson Model的信息獲取
參考我的博客文章Laravel API開(kāi)發(fā)初探
Laravel API結(jié)合Dingo API和JWT
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/25586.html
摘要:之前我們已經(jīng)準(zhǔn)備好了基本的安裝過(guò)程現(xiàn)在我們?nèi)?shí)現(xiàn)一下具體的業(yè)務(wù)部分用戶的登錄與注冊(cè)對(duì)于用戶注冊(cè)這對(duì)于一款應(yīng)用來(lái)說(shuō)再正常不過(guò)了為了接下來(lái)我們的效果我們可以去生成一個(gè)即在項(xiàng)目終端執(zhí)行生成用戶之后我們暫時(shí)先不去編輯字段后面我們需要用到時(shí)再加返回字 之前我們已經(jīng)準(zhǔn)備好了基本的安裝過(guò)程 現(xiàn)在我們?nèi)?shí)現(xiàn)一下具體的業(yè)務(wù)部分 用戶的登錄與注冊(cè) 對(duì)于用戶注冊(cè) 這對(duì)于一款應(yīng)用來(lái)說(shuō)再正常不過(guò)了 為了接下來(lái)...
摘要:后端開(kāi)發(fā)的疑惑后端開(kāi)發(fā)最常面對(duì)的一個(gè)問(wèn)題性能高并發(fā)等等。而到了時(shí)代,在方面有了前后端分離概念移動(dòng)后端更是無(wú)力渲染天然前后端分離。 先來(lái)上一張前端頁(yè)面的效果圖(Vue + Vux + Vuex + Vue-Router)。showImg(https://segmentfault.com/img/remote/1460000010207850); 第一次做gif 沒(méi)什么經(jīng)驗(yàn),太大了。加載...
摘要:前期準(zhǔn)備原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界??蚣埽俏易钕矚g的框架了,沒(méi)有之一。 前期準(zhǔn)備 原文地址前言,為什么做以及要做個(gè)啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會(huì)兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開(kāi)始折騰APP了,話說(shuō)現(xiàn)在開(kāi)...
閱讀 2767·2021-11-22 13:54
閱讀 2704·2021-10-14 09:42
閱讀 4054·2021-09-28 09:47
閱讀 2174·2021-09-03 10:28
閱讀 1217·2021-07-26 23:38
閱讀 2568·2019-08-30 15:54
閱讀 2649·2019-08-29 16:35
閱讀 1438·2019-08-29 15:42