API Overview - Non-Sense/mew GitHub Wiki

APIのもろもろの説明

基礎

  • データのやり取りはすべてJSONを使います
  • APIには認証が必要なものもあります(ログインが必要)

認証について

  • JWTをを実装してます

使い方

  1. ユーザ登録します: /api/signup
  2. ログインします: /api/login
  3. レスポンスヘッダーのX-AUTH-TOKENにトークンがセットされます
    • ログイン失敗時は200以外のHttpコードが返ります
    • トークンはCookieとかに突っ込んどくと都合がいいと思います
  4. リクエストヘッダのX-AUTH-TOKENにトークンをセットして、使いたいAPIを叩きます

トークンには有効期限がある(今の所5時間)ので、認証が必要なAPIを叩いて403が返ってきたらログインし直してください

フォーマット

ユーザ登録時のフォーマット

  • ユーザ登録するときにサーバ内部で以下の正規表現をかけています
  • マッチしないと400が返されます
KEY 説明 正規表現
nameId ログイン用ID ^\w{5,15}$
name 表示名 ^[0-9a-zA-Zぁ-んァ-ヶ一-龠々ー]{1,50}$
password パスワード ^.{6,}

時刻表現

  • ISO 8601形式です
    • yyyy-MM-ddTHH:mm:ss
    • e.g. 2021-05-28T07:49:09

実装済みのAPI

/api

テスト用です
サーバが生きてるかどうかの確認ができるくらいの用途
常にHelloを返します
(そのうち消す)

[POST] /api/signup

  • ユーザ登録します

POST JSON

KEY 説明
nameId ログイン用ID String
name 表示名 String
password パスワード String

RESPONSE JSON

  • 無し

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
409 nameIdが重複している

[POST] /api/login

  • ログインします
    • 成功時はレスポンスヘッダのX-AUTH-TOKENにトークンがセットされています

POST JSON

KEY 説明
nameId ログイン用ID String
password パスワード String

RESPONSE JSON

  • 無し

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
401 IDかパスワードが違う

User

[GET] /api/user

  • パラメータが一致するユーザの情報を取得します
    • パラメータはどちらか一方を指定してください
    • 両方指定された場合はnameidが優先されます

GET PARAM

KEY 説明
nameid ログイン用ID String
id 内部ID Int

RESPONSE JSON

KEY 説明
userId 内部ID Int
nameId ログイン用ID String
name 表示名 String
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 一致するユーザが無い

[GET] /api/user/{nameid}

  • ログイン用IDでユーザを取得します
KEY 説明
nameid ログイン用ID String

RESPONSE JSON

KEY 説明
userId 内部ID Int
nameId ログイン用ID String
name 表示名 String
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 一致するユーザが無い

[GET] /api/user/find

  • 表示名でユーザを検索します
    • 一部でも一致するとヒットになります

GET PARAM

KEY 説明
name 検索する表示名 String

RESPONSE JSON

  • 下記JSONの配列が返ります
KEY 説明
userId 内部ID Int
nameId ログイン用ID String
name 表示名 String
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 ヒット件数=0

Book

[POST] /api/book

単語帳を新規登録します
同一タイトルは許容されます(変えたほうがいい?)

POST JSON

KEY 説明
titile タイトル String
public 公開する String

RESPONSE JSON

  • 無し

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正

[GET] /api/book

GETパラメータを指定しない場合、自ユーザの単語帳を取得します
GETパラメータで指定したユーザの単語帳を取得します
他ユーザを取得するとき、公開状態の単語帳のみ取得されます

GET PARAM

KEY 説明
userid ユーザID String

RESPONSE JSON

  • 下記JSONの配列が返ります
KEY 説明
bookId 内部ID Int
userId 作成者ID Int
title タイトル String
public 公開状態 Boolen
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 存在しない

[GET] /api/book/{id}

指定した内部IDの単語帳を取得します

KEY 説明
id 単語帳内部ID Int

RESPONSE JSON

KEY 説明
bookId 内部ID Int
userId 作成者ID Int
title タイトル String
public 公開状態 Boolen
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 存在しない

[GET] /api/book/find

単語帳をタイトルで検索します

GET PARAM

KEY 説明
title 検索するタイトル String

RESPONSE JSON

  • 下記JSONの配列が返ります
KEY 説明
bookId 内部ID Int
userId 作成者ID Int
title タイトル String
public 公開状態 Boolen
createdAt 作成日時 時刻:String
updatedAt 更新日時 時刻:String

RESPONSE CODE

CODE 説明
200 OK
400 フォーマットが不正
404 存在しない

/api/test

テスト用です
認証が必要なのでX-AUTH-TOKENがセットできているとか,トークンが生きているとか確認できます
認証できていればvalidを返します
できていなければ403
(そのうち消す)

/api/users [TEST]

テスト用です
ユーザ一覧を取得します(最大300件)
(そのうち消す)

/api/books [TEST]

テスト用です
公開状態関わらず単語帳一覧を取得します(最大300件)
(そのうち消す)

⚠️ **GitHub.com Fallback** ⚠️