こちらのリポジトリではExpressでブログ投稿APIを作成することで、認証・認可とユーザ作成、ブログのCRUD APIを実装していきます。
デモは Heroku に上がっています。
demo: Demo
- 下記エンドポイントにPOSTリクエストを行いユーザを作成
url: https://express-crud-sample-728c698bcec2.herokuapp.com/auth/signup
{
"user": {
"loginId": "[login ID]",
"name": "[name]",
"iconUrl": "[icon url]",
"password": "[password]"
}
}
- 下記エンドポイントで1.の認証情報を使って認証。 url: https://express-crud-sample-728c698bcec2.herokuapp.com/auth/login
{
"loginId": "[login ID]",
"password": "[password]"
}
- 2で受け取ったjwtをHttpヘッダに含めてその他のエンドポイントにリクエスト → 下記仕様書にあるエンドポイントでリクエストを試せます。
※しばらく誰もアクセスしていないとサーバが休眠状態になってしまうので、最初のアクセスではしばらく待ちが発生するかもしれません
- データベースの基本
- TypeScriptの基本
- MVC(Model View Controller)
- SQLでのCRUD
- ORMの基礎
- ORMでのCRUD
- マイグレーションとシード
- API(Passport)を使用した認証・認可
- Expressを利用したWeb APIの実装
コンテナ仮想化技術をメインでは学びませんがMySQLを使用する際に使うので概要だけでもさらうようにしておいてください。
Docker ドキュメント(公式 Dockerとは何かを入門者向けに解説!基本コマンドも
- 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典-リレーショナルデータベース (RDB)
- 【初心者向け】MySQLでできることや使い方の基本について
- SQL素人でも分かるテーブル結合(inner joinとouter join)
- 「トランザクション」とは何か?を超わかりやすく語ってみた!
これまでデータベースを触ったことがない方は下記チュートリアルを終わらせてから課題に入ってください。↓↓↓↓↓
- フレームワークとは?今更聞けないWebフレームワークを始めから丁寧に
- Webフレームワークとは何か
- Express.js公式ドキュメント
- Express のインストール - Express.js
- node.js + expressでPOSTを受け取る & POSTパラメータをJSONで取得する
- TypeScript公式
- TypeScript Deep Dive 日本語版
- TypeScript入門者がハマりがちな記法(文法)の呼び方と簡易解説まとめ
- https://qiita.com/Nossa/items/726cc3e67527e896ed1e
- TypeScriptで始めるNode.js入門
- TypescriptでExpressを設定する
フォークでなく個人のアカウントにリポジトリ を作成してください。 課題はdevelopブランチで開発を進め、最後完成した後にmasterへのプルリクエストを作成してコードレビューをうけるようにしてください。
下記順番に実装を行うようお願いします。
※MySQLをさわったことのない方はチュートリアルをすませてから課題にはいってください。
- typescriptのインストール
- expressのインストール
- expressサーバが起動すること
- ルートのエンドポイントが
{"message":"ok"}
のjsonを返却すること
テーブル定義書 を元にモデルの作成
- DB接続の確認
- 全モデルの作成
- マイグレーションの作成
- シードの作成(Categoriesテーブルだけ)
/auth
配下のエンドポイントの実装
-
/auth/signup
でユーザ登録ができること -
/auth/login
でログインができること(jwtが返却されること) -
/user
でユーザ情報が取得できること
仕様書にあるその他のエンドポイントの実装
- 仕様書通りに実装されていること
HerokuにAPIをデプロイして公開します。 手順はWikiを参照してください。
データベースを使うにはチュートリアルはコマンドライン上でやって欲しいですが、普段はGUIから操作することが多いです。 インストールしておくことを強くおすすめします。
APIをテストするにあたってHTTPリクエストを送る必要があります。curlのような温かみのあるツールを使っても良いですが、 今時のChromeからリクエストを送れるツールを使うのも良いかと思います。