設計 - 1m38/play-ItemDB GitHub Wiki

仕様

  • RESTfulなAPIアプリケーション
  • 商品画像、商品タイトル(-100文字)、説明文(-500文字)、価格
  • これらの情報を持つ商品データの登録、検索、削除
  • レスポンスはJSONで、内容は自由

URI設計

APIs

  • HTTPメソッド: GET, POST, DELETEのみ使う

GET /api/items

  • 商品一覧をjsonで
    • 内容: 画像, title, 価格
    • できれば多数の商品が登録された場合を考えて、複数ページに分けられるように
      • URIイメージ: /api/items?offset=xx

GET /api/items/:id

  • 商品idについての詳細をjsonで
    • 画像については、画像ファイルへのURIで代用

GET /api/search?query

  • 商品検索
  • query:
    • keyword = フリーワード(タイトルと説明文の両方から検索)
    • title = タイトル+... (とりあえずAND検索だけ実装)
    • description = 説明文内の単語+単語+...
    • priceupper = 価格上限
    • pricelower = 価格下限
  • レスポンス: GET /api/items と同じ形式で
  • レスポンスでの商品の並び順: タイトル一致数>説明文一致数>価格が安い順 でソート

POST /api/items/:id

  • 商品情報の登録/変更
  • validate:
    • タイトル・説明文の文字数が範囲内か
    • タイトルが入力されているか
    • 価格が未入力or数値であるか(文字などは受け付けない)
  • 入力内容をjsonで投げて登録させる
  • 画像はどう送るのがいい?
    • base64エンコード、byte[] などに変換してJSONに含める
    • MultipartEntityなど、JSONと画像を同時に送れる形式がある?

DELETE /api/items/:id

  • 商品情報の削除

Views

  • 余力があればwebインターフェースを作りたい

/items

  • 商品一覧(リンク: items:id, /items/new)
    • できれば多数の商品が登録された場合を考えて、複数ページに分けられるように

/items/:id

  • 商品idについて詳細(リンク: items:id/delete, items:id/modify)

/items/:id/modify

  • 商品idについて変更

/items/:id/delete

  • 商品idについて削除の確認