目錄
Events
首頁 php框架 Laravel Laravel教你簡單寫出專業的RestfulAPI

Laravel教你簡單寫出專業的RestfulAPI

Oct 27, 2020 pm 01:45 PM
laravel restful

Laravel教你簡單寫出專業的URL

引言

在我們連接了資料庫,並且使用遷移功能創建了資料庫表結構,使用Seeder為資料庫初步填充了一些偽資料。有了這些準備工作,我們可以考慮做一個資源介面功能,對外提供資料支援了。

#程式碼時間

#有沒有感覺自己設計的API介面和資料跟別的大廠提供的文檔資料結構不太一樣,看起來不是那麼專業,或者說不是那麼標準?我們和大廠還差幾個年級? laravel提供了簡單的標準方式,可以讓我們遵循最佳實踐寫出專業的url。

例如對於資源,使用restful風格聲明一下的url路由位址:

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

如何快速地產生上述控制器方法?使用laravel腳手架指令,在命令列執行:

php artisan make:controller EventsController --resource
登入後複製
我們使用 –resource

選項,會在目標控制器內產生上述的所有方法。

產生的檔案位於

app/Http/Controllers/EventsController.php

# 內,初始化的內容如下:

##這些方法真的是開箱即用啊。 那麼,我們還要手動一條一條地宣告上面的那些路由條目嗎?那真是惡夢啊。還好,laravel幫我們做好了,只用

Route

類別的resource

方法註冊資源就可以了:

Route::resource('events', 'EventsController');
登入後複製
使用資源路由方法,只用指定路由名稱,和對應的控制器方法,就可以不用繁瑣地寫那些路由,和控制器方法了。

為方便展示,我們把資料渲染到視圖文件,先建立resources/views/events/index.blade.php 視圖文件,使用預設的佈局文件,填入以下程式碼:

@extends('layouts.app')
@section('content')
    <h1 id="Events">Events</h1>
@endsection
登入後複製
開啟

app/Http/Controllers/EventsController

檔案並修改

index 方法:

public function index(){
    return view('events.index');}
登入後複製
大家看到了,上述方法內是沒有資料庫資料互動的,我們下面引入模型,並渲染到視圖內。在控制器頂部添加如下引用:

use App\Event;
登入後複製
index方法內填充以下程式碼:
$events = Event::all();return view('events.index')->with('events', $events);
登入後複製
有了以上的數據,在視圖內簡單地遍歷輸出內容,修改視圖檔案如下:

<h1 id="Events">Events</h1>
登入後複製
        @forelse ($events as $event)         
  • {{ $event->name }}
  •     @empty        
  • No events found!
  •     @endforelse
範本檔案內

@forelse 方法會判斷是否$events

變數至少有一個元素可供遍歷,如果沒有就輸出

@empty

區塊的內容。在瀏覽器內存取路由位址,輸出內容大致如下圖。因為使用的

Faker填充的偽數據,所以看起來是這樣的:如果數據量太大,這一頁估計要載入很久,列表很長。所以需要分頁了。加入分頁功能,使用的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;
登入後複製
控制器內使用分頁功能,簡單對模型呼叫

paginate

方法即可:

$events = Events::paginate(10);
登入後複製
每頁設定為10條。我們在視圖內,要有一個前一頁,後一頁,以及頁碼的導航條,也不用我們手動寫了。 laravel竟然繼承到了

paginate

方法所回傳的

Illuminate\Pagination\LengthAwarePaginator 類別內,只用在視圖內加入這樣一行就夠了:

{!! $events->links() !!}
登入後複製
產生的導航條如下:

寫在最後

本文簡明扼要地介紹了laravel資料庫填充所使用的方法,我們可以手動填充,

也可以使用第三方函式庫填充偽數據,效率明顯提升很多。也只要準備好了數據,

才能談得上業務邏輯和介面對接。這些數據也是應用程式的基礎,所以很重要。

本文是上一章所述laravel資料庫遷移功能的補充。資料庫遷移是比較大的動作,

特別是已經上線生產的應用程式資料庫,如果非到更新遷移的地步不可,需要預期做好演練,

以應對可能的突發事故。                                           為  

以上是Laravel教你簡單寫出專業的RestfulAPI的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在dcat admin中如何實現點擊添加數據的自定義表格功能? 在dcat admin中如何實現點擊添加數據的自定義表格功能? Apr 01, 2025 am 07:09 AM

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

在Laravel中如何獲取郵件發送失敗時的退信代碼? 在Laravel中如何獲取郵件發送失敗時的退信代碼? Apr 01, 2025 pm 02:45 PM

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

Laravel Redis連接共享:為何select方法會影響其他連接? Laravel Redis連接共享:為何select方法會影響其他連接? Apr 01, 2025 am 07:45 AM

Laravel框架中Redis連接的共享與select方法的影響在使用Laravel框架和Redis時,開發者可能會遇到一個問題:通過配置...

Laravel多租戶擴展stancl/tenancy:如何自定義租戶數據庫連接的主機地址? Laravel多租戶擴展stancl/tenancy:如何自定義租戶數據庫連接的主機地址? Apr 01, 2025 am 09:09 AM

在Laravel多租戶擴展包stancl/tenancy中自定義租戶數據庫連接使用Laravel多租戶擴展包stancl/tenancy構建多租戶應用時,...

Bangla 部分模型檢索中的 Laravel Eloquent ORM) Bangla 部分模型檢索中的 Laravel Eloquent ORM) Apr 08, 2025 pm 02:06 PM

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

在Laravel6項目中如何有效檢查Redis連接的有效性? 在Laravel6項目中如何有效檢查Redis連接的有效性? Apr 01, 2025 pm 02:00 PM

在Laravel6項目中如何檢查Redis連接的有效性是一個常見的問題,特別是在項目依賴於Redis進行業務處理時。以下是...

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

Laravel數據庫遷移遇到類重複定義:如何解決遷移文件重複生成及類名衝突? Laravel數據庫遷移遇到類重複定義:如何解決遷移文件重複生成及類名衝突? Apr 01, 2025 pm 12:21 PM

Laravel數據庫遷移過程中出現類重複定義問題在使用Laravel框架進行數據庫遷移時,開發者可能會遇到“類已使用�...

See all articles