🎉
APIでもページネーションを簡単に実装する(Laravel)
今回はAPI通信でもページネーションを簡単に実装する方法について解説します。
だいぶ前に、APIでページネーションを実装しようとしたときに「これ、どうやって2ページ目の値を取得するんだろう?」って悩んだことがあったので、メモとして残しておきます
まず簡易的なルーティングとコントローラを実装する
api.phpにユーザー一覧取得APiを定義します
<?php
use App\Http\Controllers\Api\UserController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('users', [UserController::class, 'index']);
UserControllerは超簡易的にしています。
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
return User::paginate(20);
}
}
APIを送ってみる
これでAPIでリクエストを送ってみると、レスポンスはこのような形で返ってきます。
dataの部分にユーザー一覧が格納されていることが分かります。
そして、感のいい人ならお気づきかもしれませんが、次のページを取得するときにはレスポンスに含まれている http://127.0.0.1:8000/api/users?page=2
をそのまま使用すればOKです。
2ページ目を送ってみる
http://127.0.0.1:8000/api/users?page=2
にリクエストを送ってみます
2ページ目が最終ページになるので、 next_page_url
にはnullが入っています。
pageパラメータを送ればそのページのデータが取得できます
Controllerには一切 pageというリクエストを定義していないのに、 page
パラメータを送ると、そのページのデータが取得できます。
4ページ目のデータが欲しい場合は、 今回の例でいうと、 http://127.0.0.1:8000/api/users?page=4
にリクエストを送ればよいです。
めちゃくちゃ便利だし、レスポンスで返ってくる値が引くほど丁寧なので、ページネーションがめちゃ簡単に作れますね!
というわけで、APIだろうがそうじゃなかろうが、ページネーションは簡単に作れるということで、今回の記事は以上になります!
Discussion