課題

課題1

ファイルに下記のように果物名が記述されている。

  • fruit.txt
    バナナ
    アップル
    オレンジ
    バナナ
    アップル
    バナナ
    

果物名をそれぞれカウントして、出現回数の多い順にファイルに出力してください。

  • 出力フォーマット
    • 1行目はヘッダ行。 果物名,数 固定。
    • 2行目以降は、果物名,数をプリントし、fruit-count.txt というファイル名で保存する
    • 例)
      果物名,数
      バナナ,3
      アップル,2
      オレンジ,1
      

課題2

  • 課題1で出力したfruit-count.txtを読み込む。

  • fruit-count.txt

    果物名,数
    バナナ,3
    アップル,2
    オレンジ,1
    
  • 標準入力を受け取り、果物名を入力されたら、その果物の数を返す。

  • 例えば、標準入力からバナナと入力されたら3を返す。

  • 該当しない果物名が入力されたら 0 をかえす

  • exitと入力されたらプログラムを終了する

課題3

  • fruit-count.txtを読み込む
  • localhost:8080で動くWebServerを起動する
  • API仕様
    • GET /fruit
      • fruit-count.txtの内容をJSON形式でレスポンス出力する
      • HTTP STATUS 200とする
      • 応答例
      {
          "items": [
              {
                  "バナナ":3
              },
              {
                  "アップル":2
              },
              {
                  "オレンジ":1
              }
          ]
      }
    • POST /fruit
      • BodyデータをJSON形式で受け取る
      • 単一のオブジェクトでKeyが果物名、Valueに数が入る
      • 入力例
      {
          "キウイ":4
      }
      • 成功の場合は、レスポンスでHTTP STATUS 201をかえす。
      • Bodyデータは空とする。
      • fruit-count.txtから読み込まれたデータにデータを挿入する。つまり、次に GET /fruitが呼ばれたときは、キウイ:4が挿入されている。
      {
          "items": [
              {
                  "キウイ":4
              },
              {
                  "バナナ":3
              },
              {
                  "アップル":2
              },
              {
                  "オレンジ":1
              }
          ]
      }
      • 下記のパターンではHTTP STATUS 400を返す。データの挿入は行われない。
        • JSON形式ではないBodyデータを受け取った
        • すでに存在している果物を指定された