こんにちは、フルスタックエンジニアのryuです。
今回の記事では、cakephpでRESTapiを作成する方法を解説します。RESTapiを有効にすれば、簡単に出力結果をjson形式で表示することができます。どのようにRESTを有効にするのかを詳しく解説します。
【cakephp】RESTapiを作成してjson形式で出力する方法
cakephpでRESTapiを作成したい
今回の記事では、cakephpでRESTapiを作成する方法を解説します。
下記の画像のようにjson形式で結果を出力することができます。
RESTapiが良く分からないという方は、こちらの記事で概要を理解してください。
では、設定方法を解説します。
データの準備
まずデータの準備を行います。
データベースに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をさらに知りたいという方は、こちらの参考書を読んでみてください。