溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

發(fā)布時間:2021-01-27 15:08:30 來源:億速云 閱讀:256 作者:小新 欄目:編程語言

這篇文章主要介紹了Laravel中如何實現(xiàn)專業(yè)的RestfulAPI,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Laravel教你簡單寫出專業(yè)的URL

引言

在我們連接了數(shù)據(jù)庫,并且使用遷移功能創(chuàng)建了數(shù)據(jù)庫表結(jié)構(gòu),

使用Seeder為數(shù)據(jù)庫初步填充了一些偽數(shù)據(jù)。有了這些準(zhǔn)備工作,我們可以考慮做一個資源接口功能,

對外提供數(shù)據(jù)支持了。

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

代碼時間

有沒有感覺自己設(shè)計的API接口和數(shù)據(jù)跟別的大廠提供的文檔數(shù)據(jù)結(jié)構(gòu)不太一樣,

看上去不是那么專業(yè),或者說不是那么標(biāo)準(zhǔn)?我們和大廠還差幾個年級?

laravel提供了簡單的標(biāo)準(zhǔn)方式,可以讓我們遵循最佳實踐寫出專業(yè)的url。

比如對于資源,使用restful風(fēng)格聲明一下的url路由地址:

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

第一列是http請求方法,第二列是laravel內(nèi)聲明的路由規(guī)則,第三列是對應(yīng)的控制器方法。上面的資源列表,涵蓋了增刪改查的所有動作,可以說很全面了。

如何快捷地生成上述控制器方法呢?使用laravel腳手架指令,在命令行運行:

php artisan make:controller EventsController --resource

我們使用 –resource 選項,會在目標(biāo)控制器內(nèi)生成上述的所有方法。

生成的文件位于 app/Http/Controllers/EventsController.php 內(nèi),初始化的內(nèi)容如下:

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

這些方法真的是開箱即用啊。

那么,我們還要手動一條一條地聲明上面的那些路由條目嗎?那真是噩夢啊。還好,laravel幫我們做好了,只用Route類的 resource 方法注冊資源就可以了:

Route::resource('events', 'EventsController');

使用資源路由方法,只用指定路由名稱,和對應(yīng)的控制器方法,就可以不用繁瑣地寫那些路由,和控制器方法了。

為方便展示,我們把數(shù)據(jù)渲染到視圖文件,首先創(chuàng)建 resources/views/events/index.blade.php 視圖文件,使用默認(rèn)的布局文件,填充以下代碼:

@extends('layouts.app')
@section('content')
    <h2>Events</h2>
@endsection

打開 app/Http/Controllers/EventsController 文件并修改 index 方法:

public function index(){
    return view('events.index');}

大家看到了,上述方法內(nèi)是沒有數(shù)據(jù)庫數(shù)據(jù)交互的,我們下面引入模型,并渲染到視圖內(nèi)。在控制器頂部添加如下引用:

use App\Event;

index方法內(nèi)填充以下代碼:

$events = Event::all();return view('events.index')->with('events', $events);

有了以上的數(shù)據(jù),在視圖內(nèi)簡單地遍歷輸出內(nèi)容,修改視圖文件如下:

<h2>Events</h2><ul>
    @forelse ($events as $event)
        <li>{{ $event->name }}</li>
    @empty        <li>No events found!</li>
    @endforelse</ul>

模板文件內(nèi)@forelse 方法會判斷是否 $events 變量至少有一個元素可供遍歷,如果沒有就輸出 @empty區(qū)塊的內(nèi)容。在瀏覽器內(nèi)訪問路由地址,輸出內(nèi)容大致如下圖。因為使用的Faker填充的偽數(shù)據(jù),所以看上去是這樣的:

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

如果數(shù)據(jù)量太大,這一頁估計要加載很久,列表很長。所以需要分頁了。加入分頁功能,使用的SQL語句大概是這樣的:

select id, name from events order by id asc limit 10 offset 0;
select id, name from events order by id asc limit 10 offset 10;

控制器內(nèi)使用分頁功能,簡單對模型調(diào)用paginate方法即可:

$events = Events::paginate(10);

每頁設(shè)置為10條。我們在視圖內(nèi),要有一個前一頁,后一頁,以及頁碼的導(dǎo)航條,也不用我們手動寫了。laravel竟然繼承到了paginate方法所返回的 Illuminate\Pagination\LengthAwarePaginator 類內(nèi),只用在視圖內(nèi)添加這樣一行就夠了:

{!! $events->links() !!}

生成的導(dǎo)航條如下:

Laravel中如何實現(xiàn)專業(yè)的RestfulAPI

寫在最后

本文簡明扼要地介紹了laravel數(shù)據(jù)庫填充所使用的方法,我們可以手動填充,

也可以使用第三方庫填充偽數(shù)據(jù),效率明顯提升很多。也只要準(zhǔn)備好了數(shù)據(jù),

才能談得上業(yè)務(wù)邏輯和接口對接。這些數(shù)據(jù)也是應(yīng)用程序的基礎(chǔ),所以很重要。

本文是對上一章所述laravel數(shù)據(jù)庫遷移功能的補充。數(shù)據(jù)庫遷移是一個比較大的動作,

特別是已經(jīng)上線生產(chǎn)的應(yīng)用數(shù)據(jù)庫,如果非到更新遷移的地步不可,需要預(yù)期做好演練,

以應(yīng)對可能的突發(fā)事故。                        

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Laravel中如何實現(xiàn)專業(yè)的RestfulAPI”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI