在Laravel中如何在一個(gè)接口中實(shí)現(xiàn)首頁查詢10條數(shù)據(jù)和分頁查詢5條數(shù)據(jù)?

在Laravel中如何在一個(gè)接口中實(shí)現(xiàn)首頁查詢10條數(shù)據(jù)和分頁查詢5條數(shù)據(jù)?

laravel高效實(shí)現(xiàn)首頁加載10條和分頁加載5條數(shù)據(jù)

本文介紹如何在單個(gè)Laravel接口中實(shí)現(xiàn)移動(dòng)端文章列表的雙重加載需求:首頁加載10條數(shù)據(jù),后續(xù)分頁加載每次5條數(shù)據(jù)。

業(yè)務(wù)場(chǎng)景

移動(dòng)端文章列表接口需要滿足以下條件:

  • 首次加載顯示10篇文章。
  • 用戶下拉刷新或上拉加載更多時(shí),每次加載5篇文章。

實(shí)現(xiàn)方案

無需創(chuàng)建兩個(gè)獨(dú)立接口,一個(gè)接口即可滿足需求。關(guān)鍵在于靈活處理前端傳遞的參數(shù)。

  1. 首次加載 (首頁):

    前端請(qǐng)求接口時(shí),傳遞per_page=10和page=1參數(shù)。

  2. 分頁加載:

    用戶觸發(fā)加載更多時(shí),前端傳遞per_page=5,并將page參數(shù)遞增。

Laravel代碼實(shí)現(xiàn)

public function getArticles(Request $request) {     $perPage = $request->input('per_page', 10); // 默認(rèn)10     $page = $request->input('page', 1);       // 默認(rèn)1      $articles = Article::paginate($perPage, ['*'], 'page', $page);      return response()->json($articles); }

前端請(qǐng)求示例 (使用axios)

首次加載:

axios.get('/api/articles', {     params: {         per_page: 10,         page: 1     } }) .then(response => {     // 處理數(shù)據(jù) });

分頁加載 (假設(shè)當(dāng)前頁碼為currentPage)

axios.get('/api/articles', {     params: {         per_page: 5,         page: currentPage + 1     } }) .then(response => {     // 處理數(shù)據(jù),更新currentPage });

通過paginate方法,Laravel優(yōu)雅地處理分頁邏輯。 前端通過控制per_page和page參數(shù),輕松實(shí)現(xiàn)首頁加載和分頁加載的不同數(shù)據(jù)數(shù)量。 此方法簡(jiǎn)潔高效,避免了冗余代碼,提高了接口的可維護(hù)性。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享