php

【cakephp】RESTapiを作成してjson形式で出力する方法

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、cakephpでRESTapiを作成する方法を解説します。RESTapiを有効にすれば、簡単に出力結果をjson形式で表示することができます。どのようにRESTを有効にするのかを詳しく解説します。

関連【おすすめ】コマンドを打ちながらLinuxが学べるサイトInfraAcademy

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

【cakephp】RESTapiを作成してjson形式で出力する方法

cakephpでRESTapiを作成したい

今回の記事では、cakephpでRESTapiを作成する方法を解説します。

下記の画像のようにjson形式で結果を出力することができます。

json形式で出力

RESTapiが良く分からないという方は、こちらの記事で概要を理解してください。

0からREST APIについて調べてみた – Qiita

では、設定方法を解説します。

データの準備

まずデータの準備を行います。

データベースにtableを作成して、データーを挿入します。

今回はサンプルとして、usersテーブルを作成しました。下記のSQLを流して作成してください。

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `name`, `created_at`) VALUES
(1, 'user1', '2021-01-11 06:40:19'),
(2, 'user2', '2021-01-11 06:40:19');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;

テーブルの作成が完了したら、bakeコマンドを使用してcontrollerなどを一括で作成します。

.\bin\cake bake all users
.\bin\cake bake all [テーブル名]

これで準備が完了です。続いては、RESTの設定を行います。

RESTを有効にする

ここからRESTの設定を行います。

まず、ルーティングの設定です。config/routes.phpに下記の設定を追加します。

Router::scope('/', function ($routes) {
    $routes->setExtensions(['json']);
    $routes->resources('Users');
});

$routes->resources(”);には、テーブル名を指定します。

$routes->setExtensions([‘json’]);では、出力したい形式を指定します。xmlなどを指定することも可能です。

次は、コントローラーの設定です。

Controllers/UsersController.phpのindexアクションの設定を変更します。

    public function index()
    {
   /* ↓デフォルトのものはコメントアウト*/
        /* $users = $this->paginate($this->Users);
        $this->set(compact('users')); */
   
   /* こちらの設定を追加*/
        $users = $this->Users->find('all');
        $this->set([
            'users' => $users,
            '_serialize' => ['users']
        ]);
    }

これで完成です。

「http://[自分のURL]/users.json」にアクセスすると下記のように表示することができました。

出力結果

【cakephp 】RESTapiの参考資料

今回の記事は、こちらのドキュメントを参考に実装しております。

詳しくは、こちらをご覧ください。

また、cakephpをさらに知りたいという方は、こちらの参考書を読んでみてください。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
InfraAcademyというインフラエンジニア向けの学習サービスを運営しております。 インフラエンジニアからフルスタックエンジニア、PdM サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。
RELATED POST