/todolist_api

TODOリストアプリケーション用のRESTAPI

Primary LanguageHTML

TODOリスト用 Rest API

実技試験用に作成しました
TypeScript-Node-Starterを参考にしています。

要件

  • Todo の要素として次の項目を保持する
    - タイトル
    - 内容
  • 検索、登録、更新、削除の操作が行える
  • テストコードが書かれている
  • API 仕様書が書かれている

使用言語

Nodejs 6.3(TypeScript)

APIを公開する場合の考慮

  • データの永続化
    MongoDBを利用して実装
  • ユーザ認証
    URIのユーザIDで判別し、認証はしない
  • 同時アクセス
    APIの責務ではないので割愛
  • 排他制御
  • 拡張性
    • 認証処理を追加する場合
    • データモデルの変更が発生した場合
  • テスト
    API毎にテストスイートを分けて見通しよくする
    パラメータ抜け等で使われ方での異常パターンがどれだけ踏めているか
    MongoDBが落ちてる時
  • バージョンをAPI仕様に含めるか?

考察

時間が許す限り書いていきます。

  • なぜMongoDBを採用したのか
    JSONで出し入れが簡単に出来るため、採用しました。

TODOリストの機能として、トランザクション機能が必要ない(そもそもRestAPIなので)と言う点でもあります。
複数のオブジェクトを結合する必要が出てきた場合は、RDBも検討の余地があると考えます。

  • async awaitは必要か
    mongodbの操作結果に対する処理をcallback hellにしないために利用しました。
    結果的に可読性が上がり、デバッグも捗ったと考えています。

課題

  • テストファイルを複数作ると2個目以降の実行でエラーになる
    -> 調べる
  • テストファイルを操作単位で分けて、操作毎にパラメータ欠けのテストを追加する
  • パラメータ不足によるエラーを定義する
    -> API仕様書
  • プレゼン資料作る -> 努力目標
  • Express,TypeScript,MongoDBの利用基準
  • APIを作る際の考慮について纏めておく -> テスト性、移植性