文献にタグをつけ、検索する web アプリを作る
https://tagtagyeah.herokuapp.com/
ユーザー名、パスワード、メールアドレスを登録する。
- username: ユーザー名、20 バイト以下英数字のみの文字列
- password: パスワード、100 バイト以下の文字列、ハッシュ済みのものにすること
- email: メールアドレス、100 バイト以下の文字列、
メール認証 (メールに送信されているリンク)
- uuid: uuid
認証メール送信、ユーザーにつき 1 日 10 通まで送信可能
- username: ユーザー名
ユーザー名、パスワードから、UUID が生成される。 UUID の有効期限は 1 日。 メール未認証のときはじかれる。
- username: ユーザー名、20 バイト以下の文字列
- password: パスワード、100 バイト以下の文字列、ハッシュ済みのものにすること
JSON 型
- uuid: ユーザー uuid、20 文字の文字列
タグの登録 user_id, name が同じ場合、追加で登録されないが成功となる。
- uuid
- name: タグ名、50 バイト以下の文字列
タグの検索、一覧取得
- uuid
- search_phrase: 検索文字列、prefix が完全一致となるタグを返す
- Tag(JSON) の配列
タグの更新
- uuid
- id: タグ id
- name: タグ名
JSON
- id: タグ id、数値
タグの削除
- id: タグ id
- uuid (クエリパラメータ)
Unit を tag から検索
- uuid
- tags: タグ id をコンマ区切りでつなげた文字列、空文字不可
- Unit(JSON) の配列
Unit を作成、タグ付け
- uuid
- tags: タグ id をコンマ区切りでつなげた文字列
- name: 名前、省略可
- url : URL、省略可 name, url のうち少なくとも 1 つは付けること
JSON
- id: Unit id、数値
Unit の更新
- uuid
- tags: タグ id をコンマ区切りでつなげた文字列、省略可
- name: 名前、省略可
- url : URL、省略可 tags, name, url のうち少なくとも 1 つは付けること
Unit の削除
- id: Unit id
- uuid (クエリパラメータ)
ユーザー情報をかえす
- uuid
JSON 型 User
ユーザー情報の更新、メールアドレスを更新する際は認証メール送信
- uuid
- username: ユーザー名、省略可
- password: パスワード、省略可
- email: メールアドレス、省略可 username, password, email のうち一つは使うこと
ユーザーの削除
- 成功時 200
- 入力パラメータのエラー 400
- uuid 有効期限切れ 403 "uuid is expired"
- ユーザーが登録していない unit, tag に対する変更 403
- それ以外のエラー(上ではじけなかった入力エラーや内部エラーなど) 500
- id: タグの id、int64 型
- user_id: このタグを登録したユーザー id、int64 型
- name: タグ名、50 バイト以下の文字列
- id: Unit の id、int64 型
- name: 登録名、文字列
- url: 登録URL、文字列
- tags: これに結び付けたタグ、Tag 型の配列
- id: ユーザー id、int64 型
- uuid: uuid、20 文字の文字列
- name: 名前、文字列
- email: メールアドレス、文字列
- expire_uuid_at: uuid の有効期限
- GET: QueryParam
- PUT, POST: FormValue
- DELETE: (Param)
- id を返してほしい
- user_id, name が同じ場合、200 以外を返したい。
- 毎回 select が実行される、search_phrase だけ変わったとき、早くかえしたい。
- 前方完全一致になっている、N グラムとかの検索アルゴリズムを入れる
ユーザー名からメール送信でパスワード再設定できるようにする(フロントと相談)