整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「軟件」使用Laravel快速構建RESTful風格

          「軟件」使用Laravel快速構建RESTful風格的API!

          aravel是一款設計簡潔、優雅的Web開發框架,受益于PHP的眾多新特性, Laravel可以幫助開發者快速構建RESTful風格的API,因此在國外開發者中非常流行。

          筆者之前一直用C++做底層開發,在開始Web開發旅途的時候接觸到了Laravel,使用之后感覺就像發現了新大陸,對其中的快速構建能力驚奇不已。盡管Laravel的文檔非常詳細,但源碼才是最好的文檔,Laravel的框架中運用了諸多設計模式,這也是Laravel能夠寫出如此優雅的代碼的原因。

          Laravel擁有非常活躍的社區,同時提供了非常豐富的開源組件,讓開發者在實際開發中如虎添翼。

          原創微信公眾號:臥龍會IT技術。閑言碎語不用講,說一說好漢Laravel,今天為大家演示如何用Laravel快速部署一個簡單的后臺程序。

          一、創建工程

          環境搭建可以參照文末的相關章節,這里不詳細闡述。首先開始創建我們的Laravel空白項目。

          1. 新建工作目錄,選在D盤的work目錄:

          切換到work目錄下,執行composer命令:

          composer create-project laravel/laravel yourProjectName

          如果一切正常,work目錄下就會生成一個空的Laravel項目。目錄結構如下:

          稍作解釋:

          • app是我們寫自己代碼的地方,包含了應用的核心代碼;

          • bootstrap目錄包含了少許文件用于框架的啟動和自動載入配置,還有一個cache文件夾用于包含框架生成的啟動文件以提高性能;

          • config目錄包含了應用所有的配置文件;

          • database目錄包含了數據遷移及填充文件,如果你喜歡的話還可以將其作為SQLite數據庫存放目錄;

          • public目錄包含了前端控制器和資源文件(圖片、js、css等);

          • resources目錄包含了視圖文件及原生資源文件(LESS、SASS、CoffeeScript),以及本地化文件;

          • storage目錄包含了編譯過的Blade模板、基于文件的session、文件緩存,以及其它由框架生成的文件,該文件夾被隔離成app、framework和logs目錄,app目錄用于存放應用要使用的文件,framework目錄用于存放框架生成的文件和緩存,最后,logs目錄包含應用的日志文件;

          • tests目錄包含自動化測試,其中已經提供了一個開箱即用的PHPUnit示例;

          • vendor目錄包含Composer依賴;

          其實這時候就可以分析Laravel源碼了,我分析源碼的習慣是先分析軟件的生命周期,有個全局的概念,然后再一個模塊一個模塊的去分析。本文的重點不在這里,我們這里不過多介紹。

          二、數據庫配置:

          在L.env中修改數據庫相關鏈接信息,否則有些組件包會安裝失敗.

          三、組件安裝

          從碼云下載開發api后臺常用的函數組件包,我自己寫的,用起來方便不少,一些常用的操作不需要重復開發:

          進入 我們的工程目錄 并clone下來我的庫https://git.oschina.net/duyisu/tiger.git,

          然后安裝后臺開發必要的組件,包括(在根目錄(laraveltest)底下直接執行下列命令)

          composer require dingo/api 1.0.x@devcomposer require damian-nz/l5-swagger dev-mastercomposer require encore/laravel-admin "1.4.*"composer require tymon/jwt-auth "^0.5.11"composer require toplan/laravel-sms ~2.5composer require endroid/qrcode ^1.9

          composer require zizaco/entrust 5.2.x-dev

          稍作解釋

          • Dingo/api是用來開發api的組件包

          • Damian-nz/l5-swagger是用來自動生成api在線文檔的組件包

          • Encore/aravel-admin用來快速開發管理后臺

          • Tymon/jwt-auth 用戶授權驗證組件包

          • Toplan/laravel-sms短信驗證

          • Endroid/qrcode 二維碼生成

          Tiger組件包需要手動修改依賴文件

          在根目錄下修改composer.json,將"Tiger\Api\": "app/tiger/api/src/"添加到psr-4:還用到一個幫助文件, "psr-4": { "App\": "app/", "Tiger\Api\": "app/tiger/api/src/" }

          原創微信公眾號:臥龍會IT技術

          接下來把provider添加到config目錄下的app.php內的的provider數組

          Dingo\Api\Provider\LaravelServiceProvider::class,Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,Tiger\Api\Providers\TigerApiServerProvider::class,L5Swagger\L5SwaggerServiceProvider::class,Encore\Admin\Providers\AdminServiceProvider::class,Zizaco\Entrust\EntrustServiceProvider::class,Toplan\PhpSms\PhpSmsServiceProvider::class,Toplan\Sms\SmsManagerServiceProvider::class,

          'PhpSms'=> Toplan\PhpSms\Facades\Sms::class,'SmsManager'=> Toplan\Sms\Facades\SmsManager::class,

          資源文件發布

          php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider"php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider"

          php artisan l5-swagger:publish

          composer dump-autoload

          php artisan vendor:publish

          其他必要的操作

          .env增加API_STANDARDS_TREE=vndAPI_PREFIX=apiAPI_VERSION=v1API_DEBUG=true

          修改api在線文檔路由

          修改config目錄下l5-swagger.php 'routes'=> [ 'docs'=> 'docs', ],

          'paths'=> [

          'excludes'=> [base_path('app/tiger/api')],

          ], 'generate_always'=> env('L5_SWAGGER_GENERATE_ALWAYS', true), '

          添加中間件

          'jwt.auth'=> \Tymon\JWTAuth\Middleware\GetUserFromToken::class,增加到kenel.php中的 $routeMiddleware數據中

          修改默認的用戶認證model為Profile

          修改config/auth.php 'providers'=> [ 'users'=> [ 'driver'=> 'eloquent', 'model'=> App\Models\Profile::class, 'table'=> 'profile', ],

          修改jwt.php 'user'=> 'App\Models\Profile',

          下面一步是設置時區,到config/app.php文件下修改時區。

          'timezone'=> 'Asia/Shanghai',

          四、代碼自動生成

          接下來后臺代碼可以自動生成了:

          1. 創建用戶認證相關控制器,路由 這個功能依賴于我自己寫的tiger組件包 php artisan api:make-auth-controller UserController

          1. Api接口相關的模型控制器 這個功能依賴于我自己寫的tiger組件包 php artisan api:make-controller User

          1. 安裝后臺管理相關的路由

          后臺管理 laravel-admin包的命令行功能,可以快速生成后臺php artisan admin:make UserController --model=App\Models\User

          1. 上面的命令執行完成后,

          然后修改對用的controller的代碼,完成軟件邏輯的部分。

          必須要在app\Admin\routes.php里面添加路由.

          至此,app后臺基本框架已經完成。

          在線api文檔生成的路徑是yourdomain/api-docs

          后臺api訪問路徑yourdomain/api/xxx

          后臺管理訪問路徑yourdomain/admin 用戶名:admin 密碼:admin

          五、環境搭建

          開發環境在windows下開發,安裝wamp一鍵安裝包即可,自己百度。

          生產環境是unbunbo,環境的搭建參考這篇博文

          http://www.blog8090.com/ubuntu-xia-php7-mysql5-7-lnmp-huan-jing-da-jian/

          可能會踩坑的地方是:

          1.mysql安裝0.5.3的源會失敗,換成0.8.1的就沒有問題

          2.配置nginx老是不成功,原來是和自帶的apache沖突,卸載掉apache在裝nginx

          sudo apt-get remove apache*

          安裝composer依賴管理工具,官網下載即可,支持windows一鍵安裝。

          有時候安裝了composer不能正常使用,有可能是環境變量問題,解決方案:composer環境變量問題:在命令行里執行

          composer config -l -g

          在輸出的結果中,其中的 【home】 配置項內容就是了composer的主目錄,然后進入vendor\bin,將這個路徑加入環境變量。從上面的報錯信息里可以看出,你用來初始化項目的vendor\bin是C:\Users\yanwushu\vendor\bin,你需要確定這個路徑是composer的主目錄,且下面的vendor\bin存在。建議執行一下我上面說的方法,查看一下路徑,然后添加正確路徑到環境變量。

          雖然packagist會有點卡,但是也不推薦使用composer中文鏡像,否則下載的包有可能不是最新的,各種問題會出現。

          文|原創:阡陌網絡

          更多精彩,專注IT技術,請關注

          微信公眾號:臥龍會IT技術

          有大神直播免費公益課!趕快來與臥龍會大神互動

          ------歡迎大家分享原文到朋友圈,微信群,QQ群等!本文由臥龍會團隊成員阡陌網絡原創,請勿抄襲,轉載,轉載聯系臥龍會進行授權,否則追究法律責任。

          個服務器不能配置多個子域名的時候很是尷尬,無法使用虛擬目錄,只能通過二級目錄訪問。在根目錄/data/wwwroot/default部署了多個laravel應用,laravel1,-laravel2...,然后按文檔配置所謂的優雅鏈接,遇到了諸多問題:

          • apache服務器:XAMPP的lamp環境
          • nginx服務器:OneinStack自動部署lnmp環境

          Apache服務器

          在lamp環境下使用還是蠻簡單,配置Laravel/public/.htaccess:

          Options +FollowSymLinks
          RewriteEngine On
          
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^ index.php [L]
          

          即可,訪問的地址:

          http://test.comlaravel1/public/admin/index

          http://test.com/laravel2/public/admin/index

          nginx服務器

          文檔中說,只要在nginx.conf下配置:

          location / {
           try_files $uri $uri/ /index.php?$query_string;
          }
          

          即可,訪問優雅鏈接,但結果有點失望,你會遇到問題:

          1. Access denied.
          2. No input file specified.
          3. 504
          4. ...

          歸根結底是nginx.conf配置問題,本人遇到最多就是Access denied,因為使用OneinStack自動部署lnmp環境,nginx.conf已經默認配置了,結果仔細對比,少了下面配置

          fastcgi_split_path_info ^(.+\.php)(.*)$;
          

          參考:https://segmentfault.com/a/1190000002667095

          難怪laravel優雅鏈接index.php后面一直無法訪問,目前為題已解決,附上一段網上的配置:

          server {
           listen 80; 
          	server_name _; 
          	set $root_path '/data/www/default'; 
          	root $root_path; 
           
          	index index.php index.html index.htm; 
           
          	try_files $uri $uri/ @rewrite; 
           
          	location @rewrite { 
          		rewrite ^/(.*)$ /index.php?_url=/$1; 
          	} 
           
          	location ~ \.php { 
           
          		fastcgi_pass 127.0.0.1:9000; 
          		fastcgi_index /index.php; 
           
          		fastcgi_split_path_info ^(.+\.php)(/.+)$; 
          		fastcgi_param PATH_INFO $fastcgi_path_info; 
          		fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
          		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
          		include fastcgi_params;
          	} 
           
          	location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { 
          		root $root_path; 
          	} 
           
          	location ~ /\.ht { 
          		deny all; 
          	} 
          }
          

          http://test.com/laravel1/public/index.php/admin/index

          http://test.com/laravel2/public/index.php/admin/index

          都可以正常訪問了,OK!

          最后隱藏index.php

          雖然上述配置在laravel中可以正常訪問,但是一些放在public里面的靜態資源可能無法訪問,比如無法使用asset()函數時,路徑中就包含index.php導致資源無法加載,所以建議隱藏index.php

          if (!-e $request_filename) {
           rewrite ^/(.*)/public/(.*)$ /$1/public/index.php/$2 last;
           break;
          }
          

          http://test.com/laravel1/public/admin/index

          http://test.com/laravel2/public/admin/index

          以上就無需加index.php,即可正常訪問

          omposer安裝

          https://www.phpcomposer.com/

          https://docs.phpcomposer.com/00-intro.html

          laravel安裝

          composer create-project laravel/laravel 安裝目錄

          cd 安裝目錄

          php artisan serve

          就會顯示出一個地址,你在瀏覽器中輸入這個地址和端口能看到laravel輸出內容

          這里還需要配置前端的知識,這里有一個webpack.mix.js,這個是一個簡單的webpack配置,webpack簡單點說就是一個前端的打包工具,可以把js和css進行代碼壓縮,我們在這里只要在新的dos窗口中運行npm install進行安裝

          安裝完后運行npm run watch就可以看到系統會自動把js進行打包了,此時,如果js或者css有修改,則會自動打包到public相應的目錄下。這里的話,還是希望大家可以去看一下webpack的入門,了解下就行了,如果你不想學,也可以不用這個,去手動寫js和css文件。

          bootstrap安裝

          https://www.bootcss.com/

          在這里下載你想使用的bootstrap版本,并放入到laravel的public目錄里就可以在模板中進行使用了,public相當于公共目錄,所有的網頁都能進行引入,還有一個storage目錄,我們可以使用php artisan storage:link進行關聯,我們后面慢慢講解具體的內容!


          主站蜘蛛池模板: 天海翼一区二区三区高清视频 | 日韩免费无码一区二区三区 | 变态拳头交视频一区二区| 一区二区三区在线看| 一本大道在线无码一区| 国偷自产av一区二区三区| 国产精品一区二区四区| 中文字幕乱码一区久久麻豆樱花| 亚洲欧洲∨国产一区二区三区| 国产一区视频在线免费观看| 亚洲AV无码一区二区乱子仑| 无码毛片视频一区二区本码| 国产色情一区二区三区在线播放| 无码国产亚洲日韩国精品视频一区二区三区 | 无码日韩人妻av一区免费| 久久国产午夜一区二区福利| 国产激情无码一区二区三区| 国产精品电影一区二区三区| 97久久精品无码一区二区天美 | 在线观看一区二区三区av| 日韩高清国产一区在线| 中文字幕一区二区人妻性色| 风流老熟女一区二区三区| 八戒久久精品一区二区三区| 日韩免费一区二区三区| 国产精品99精品一区二区三区| 国产一区在线mmai| 中文字幕无线码一区二区| 人妻av无码一区二区三区| 亚洲AV无码一区二区二三区软件 | 在线视频一区二区三区| 精品无码国产一区二区三区AV| 日韩电影一区二区| 国产精品视频一区二区三区四 | 无码国产伦一区二区三区视频 | 精品国产一区二区麻豆| 日本精品视频一区二区三区| 国产综合视频在线观看一区| 内射少妇一区27P| 国产精品一区在线观看你懂的| 国产一区二区精品久久岳|