Web開発の勉強12- 自作サービス作り5
今回の記事もWeb開発の勉強の記事です。
前回の記事では、GitHubアカウントでログインして予定の作成・削除・編集と出欠登録ができるシステムを完成させました。
developer-bpeldi2oerkd8.hatenablog.com
とはいっても前回までの内容はN予備校の教材の内容に近かったため、オリジナルの機能である「Slackのbotを使って出欠登録をする」ことを目指したいと思います。
準備
どのように機能を実現するかを考えます。
本体の出欠登録システムであるlattendance (1)と、slackのbotとしてのlattendance-bot (2)の2つを用意しています。
アプローチとしては、次の2つを思いつきました。
- 2つのシステムでデータベースを共有し、(2)で直接データベース内の出欠情報を更新する。
- (2)から(1)の出欠更新APIを叩き、出欠情報を更新する。(データベースは(1)に存在する。)
今後、botをSlack以外にも拡張するかもしれないことを考えると、外部からAPIを叩けばよいだけの2つ目を採用することにしました。
出欠更新APIの実装
早速実装に移ります。
今回は、APIにアクセス制限はつけず、まずは正しく動作するAPIを実装することに重きを置きます。
routesディレクトリ下にv1というディレクトリを作り、そこにAPIに関するファイルを入れることにします。
APIのURLは /api/v1/schedules/:roomId/users/:slackId/dates/:dateString としました。
dateStringのフォーマットは、YYYY-MM-DDとします。
完成したものがこちらです。
github.com
Promiseやasync/awaitを使い、実装しました。
日付の先頭が0のとき、うまく動かなかったため修正しました。
Jestを使ってテストコードも書きました。
テストもしっかり通り、今のところは問題ないようです。
github.com
今回はここで終わります。
次回はbotの実装と、それに伴うデータベースの変更に取り組みます。