必要なAPI仕様の定義

3038 ワード

エンコードAPIサーバが必要になりました.(expressを使用)
でも何をコードしますか?まずブログで使用するAPIを定義します...
ブログにはどんなAPIが使われていますか?最終的にはブログの概念を大まかに定義しておきます...

ブログのシンプルな構造


構造は簡単にしましょう.
  • MenuとArticleが存在する.
  • Menuの間には階層があり、Menuには最大1人の親がいることができます.(サブメニューの数に制限はありません.)
  • 自然に、親のいないMenuがトップクラスのMenuとなり、子供のいないMenuが葉Menuとなります.
  • Menu階層の深さは最大3です.
  • 葉MenuにはN個のArticleがあります.
  • Articleは、1つのリーフMenuに属している必要があります.

  • APIは何が必要ですか?


    まずMenulist&Article listのAPIを入力する必要がありますよね?
  • GET/menus
    インポート
  • Menuリスト
  • GET/articles
    インポート
  • Articleリスト
  • まずMenuとArticleに必要なデータを考えてみましょう.

    Menu Data

  • key
  • Menu private key
  • name
  • Menu名
  • parent
  • 親菜単鍵
  • children
  • サブメニューキーリスト
  • articles
  • 私が持っているArticleキーリスト
  • Article Data

  • key
  • Article private key
  • title
  • Articleタイトル
  • contents
  • Article本文
  • created
    作成日
  • Article日付
  • menu
  • 私の所属するMenu Key
  • もちろん必要なデータはありますが、MenuとArticleの最低条件はそうでしょうか?
    以上の内容に基づいて/menusおよび/articlesの詳細を定義します.
    あ、ちなみに、すべてのAPIの応答はjson形式で返されます.
    いくつかのMenuがないので、全てのデータを一度に渡すことができますが、ArticleはN個が存在すると仮定すると、全てのArticleを一度に取得する作業量が多くなります.(これも無駄です)
    /articlesはページング方式を採用している.

  • GET/menus
  • request-
  • なし
  • respone
  • メニューリスト
  • Menu - {}
  • key - string (not null)
  • name - string (not null)
  • parent - string (default: '')
  • children - string [] (default: [])
  • articles - string [] (default: [])
  • ex)
    [
    	{key: 'menu 0', name: 'menu 0', chilrend: [], articles['article 0', 'article 1', ...]},
    	{key: 'menu 1', name: 'menu 1', chilrend: ['menu 11', 'menu 12', ...], articles[]},
       ...
    ]

  • GET/articles
  • request - parameter
  • pageSize - number (default: 10)
    1ページあたり
  • 記事数
  • page - number (default: 0)
  • 現在のページ
  • menus - string (default: '')
  • ターゲットMenuリスト
  • 、Menuキーで
  • を区切る
  • ex)
    /articles?pageSize=10&page=0&menus=menu0,menu1
  • response
  • ドキュメントリスト
  • Article - {}
  • key - string (not null)
  • title - string (not null)
  • contents - string (default: '')
  • created - string (not null)
  • YYYYMMDDHHMMSS
  • menu - string (not null)
  • ex)
    [
    	{key: 'article 0', title: 'title', contents: 'contents', created: '19851031052222', menu: 'menu 0'},
    	{key: 'article 1', title: 'title', contents: 'contents', created: '19851031053333', menu: 'menu 0'},
      ...
    ]