1
0

More than 3 years have passed since last update.

CodeIgniter4でREST APIを実装する

Posted at

CodeIgniterに入門した。CodeIgniter4の公式Tutorialをやった後、REST APIの実装を試みた。調べてみると、CodeIgniteでREST APIを実装するなら、Rest_Controllerらしい。composerでインストールしてみたが、動かず。

結論、RestControllerはCodeIgntier3用。CodeIgniter4はサポートしていない。

CodeIgniter4にはResourceControllerなるREST API用のControllerが標準で用意されているので、そっちを使うべしということだと思われる。

詳しい説明を書いてくださっているサイトを発見。

参考にしたサイト

CodeIgniter3 + Rest_Controllerのメモ

インストール方法

CodeIgntier3でRest_Controllerを使ったREST API実装を試す場合、下記の手順が最短。
application/controllers/Example.phpにREST APIのサンプル実装コードがインストールされるので、このコードをベースに機能を追加してみるのが良い。

$ composer create-project kenjis/codeigniter-composer-installer codeigniter
$ cd codeigniter
$ php bin/install.php restserver 2.7.2
$ ./bin/server.sh
$ curl http://localhost:8000/api/example/users

REST_Controllerがしてくれること

REST_Controllerを使うと、route.phpにHTTP Method x URLの組み合わせ分のルーティングを書かなくてもよくなる。ルールに従った名前でメソッドを用意すれば、自動的にルーティングしてくれる。
例えば、Api.phpというファイルにApiクラスを実装。Apiクラスにnews_post()メソッドを実装しておく。すると、POST /api/newsでアクセスされた時にはそのメソッドが実行されるようになる。news_get()メソッドを用意しておくと、GET /api/newsおよび、GET /api/news/id/{id}で実行されるようになる。news_get()メソッドには前者用に全てのレコードを応答する処理を、後者用に指定されたidのレコードを応答する処理を実装しておく。
リソースのURLとして、/api/news/id/{id}ではなく、/api/news/id/{id}を使いたい場合の方が多いかもしれない。そのときは、route.phpにルールを追加しておく。

$route['api/news/(:newsid)'] = 'api/users/$1'; 
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0