以前の記事で、AdonisJSの環境構築とController作成するところまでやってみたので、
今回は「Docker環境構築」「Migration」「Seeding」「Validation」「CRUD処理」あたりを作ってみました。
DBはMySQLでORMは「Lucid」を使いました。
AdonisJS
https://adonisjs.com/Lucid
https://lucid.adonisjs.com/docs/introduction今回作った github repo
https://github.com/chanfuku/adonis-api-sampleset up
git clone git@github.com:chanfuku/adonis-api-sample.git
cd adonis-api-sample
cp .env.example .env
docker compose up -d
docker compose exec app yarn install
docker compose exec app yarn dev
run migration
docker compose exec app node ace migration:run
if you need to rollback migration, run
docker compose exec app node ace migration:rollback
seeds
docker compose exec app node ace db:seed
fetch all
curl http://localhost:3333/users
find a user by id
curl http://localhost:3333/users/1
create user
curl -X POST http://localhost:3333/users \
-H "Content-Type: application/json" \
-d '{"firstName":"テスト名","lastName":"テスト姓"}'
update user
curl -X PATCH http://localhost:3333/users/3 \
-H "Content-Type: application/json" \
-d '{"firstName":"テスト名_更新","lastName":"テスト姓_更新"}'
delete a user
curl -X DELETE http://localhost:3333/users/3
感想
.envのHOSTが127.0.0.1のままだと、Dockerで構築したAPIに外部からアクセス出来ないのでHOST=0.0.0.0(どこからでもアクセス可)に修正する必要があるところが少しハマりポイントかもしれませんが、
そこ以外はAdonisJSやLucidのdocument通りに進めて特にハマるポイントはなかったです。
Lucidに関しては、TypeORMとPrismaは使ったことがあるのですが、特に大きな違いは感じなかったです。
AdonisJSはTypescript, ORM, Testing Tool等のアプリケーション構築に必要不可欠なライブラリ郡がデフォルトで組み込まれているので、
環境構築で苦労することなくコーディングに専念出来る点がが一番の魅力なのだと感じました。
ちなみに、ORMはLucidではなくPrismaやTypeORMを選択することも可能らしいです。
次はもともと気になっていたinertijs
(Build single-page apps, without building an API.(API構築が不要なSPA)
)のアプリケーションを作ってみたいと思います。