Spring Framework第10講-RESTful API


学習内容

  • RESTful API Webサービス
  • JSONデータフォーマット
  • 学習目標

  • RESTfulサービスの理解と設計方法を学ぶ.
  • Webサービスデータ交換の事実標準JSONを理解し、それをサービス実装に使用する.
  • RESTful Webサービス概要


    Open API(アプリケーションプログラミングインターフェース)とは?


    Open APIはその名の通りオープンAPIである.
    これはAPIがアプリケーション開発時に使用されるインタフェースであることを意味するため、Open APIとはプログラミングで使用可能なオープンインタフェースを指す.
  • Daum、Naverなどのポータルサイト、統計庁、気象庁などの公式部門も、外部アプリケーションでデータを使用するためのオープンAPIを提供している.
  • OpenAPIとともによく言及される技術はRESTであり、ほとんどのOpenAPIはREST方式でサポートされている.
  • RESTfulとは?


    HTTP URI+HTTP Method
    HTTP URIによって制御されるリソースを指定し、HTTPメソッドによってリソースを制御するコマンドを発行するアーキテクチャ.
  • HTTPプロトコルで定義された4つの方法は、CRUDのリソースに対する動作を定義する
  • ページへのリクエスト送信時にHTTP URIでリソースを指定し、HTTPメソッドで特定のコマンドを発行する方式をRESTfulと呼ぶ.
    上の表は、各メソッドの役割を示しています.
    通常、各CRUDにマッピングする方法は4つあります.
    このように実施すると,「RESTful」といえる.

    RESTful APIとは?


    RESTful APIは、HTTPとURIに基づいてリソースにアクセスできるアプリケーション開発インタフェースである(REST原理のシステムをRESTfulと呼ぶ)
  • 従来のWebメソッドとRESTful APIの違い
  • 既存の掲示板はGETとPOSTのみでリソースのCRUDを処理し,URIは動作を示す.
  • RESTful掲示板は4つの方法でCRUDを処理し、URIは制御するリソースを表す.
  • 4つの方法があるので、URLはもっと簡単になります.
    RESTful APIに書き込まれていない場合は、URLに動作(コマンド)が書き込まれます.regist,remove,modifyはこのように...
    これはいいことじゃないけど...ただし、RESTful APIに書き込む場合は、URLには何の動作も書かれておらず、特定のデータを指定する必要がある場合にのみデータが宣言および終了する.

    JSONとXML


    RESTful WebサービスとJSON/XML



    サーバとのデータ交換はJSONまたはXML形式で行います.
    中でもJSONの方が使用率が高いです.

    JSON(Javascript Object Notation)

  • JSONとは?
    - http://www.json.org
  • JSONは軽量レベルのデータ交換方式
  • である
  • Javascriptオブジェクトを作成する式
  • JSON式は分かりやすく、容量が小さく、最近JSONがXMLに取って代わってデータ伝送などに使われている.
  • は特定の言語に依存しない.
  • は、ほとんどのプログラミング言語でJSON形式のデータを処理できるライブラリを提供する.
    JSONはデータ式です.

    JSONのフォーマット

  • キー値形式の対(対)
  • 言語以上のobject、hash map、struct、dictionary実装

  • {
      "firstName":"Stieve",
      "lastName":"Jobs",
      "email":"[email protected]",
      "hobby":["puzzles", "swimming"]
    }```
    タイルにすることもできます.JavaはArrayListやHashともよく互換性があります.

    JSONライブラリ-Jackson

  • http://jackson.codehaus.org
  • high-Performance JSON Processor!
  • Jackson JSONライブラリ
  • を使用してJavaオブジェクトをJSONに変換
  • 最もよく使われるJSONライブラリ
  • JavaにJacksonライブラリ依存性が追加されると、JSONデータは自動的にJavaオブジェクトに変換され、何も実行する必要はありません.逆も自動
    WebからJSONデータを受信すると、JavaからJavaオブジェクトとしてデータを受信し、データベースに保存することもできます.

    Spring MVCベースのRESTful Webサービス実装プロセス

  • RESTful Webサービスを処理するRESTful Controlクラスを作成し、Spring Bean
  • として登録します.
  • 要求処理方法で
  • と@ResponseBodyを宣言
  • RESTクライアントツール(Postman)を使用して各方法
  • をテストする.
  • Ajax通信により、RESTful Webサービスを呼び出すHTMLページ
  • が生成される.
  • を作成する場合、RestControlと呼ばれる別の方法が使用されます.
  • JSONファイルに戻るときのみ
  • @ResponseBody宣言を使用します.オブジェクトまたはデータは、戻り時に自動的にJSONに変換されて送信されます.
  • はPostmanとしてテストされた.
  • 必要なHTMLページ
  • も作成できます.
  • RESTful API設計事例


    ユーザ管理RESTful WebサービスURIと方法



    主なコメント


    RESTful Controlのキーテクノロジー

  • Spring MVCは、クライアントから送信されたXMLまたはJSONデータをコントローラからJavaオブジェクトに変換する機能(受信)を提供する.
  • JavaオブジェクトをXMLまたはJSONに変換する機能(送信)を提供する
  • 実習


    RESTfulベースのサービスオブジェクトを開発し,これらのオブジェクトを利用しようとする.

    1.文章検索機能


    掲示板の記事検索機能を実施します.

    ↑特定の記事を表示する機能なのでGET方式(@GetMapping)の記事番号をパラメータとします.
    ↑関数の内容は,サービスオブジェクトを呼び出すことにより文章データを返す.
    ↑返された記事オブジェクトは@ResponseBodyによって自動的にJSONに変換されます.

    ↑コントローラ呼び出しのViewArticleDetail()を定義します.
    ↑DAOオブジェクトを介して記事データを受信して返します.

    ↑実際にはDBバインドで記事データを受信する必要があるがバインドできないため、Artcicleオブジェクトがランダムに作成されて返されます.

    ↑コードが完成したらPOMJacksonライブラリをxmlに追加します.

    ↑左のディレクトリを見ると、Jacksonライブラリがローカルに追加されていることがわかります.

    ↑Postmanテストに合格.GET方式でURLに文章番号を付けてテストします.

    ↑JSONファイルに返信が来ました.

    ↑HeaderならContent-TypeにJSONと書いてあります
    これはサーバがJSONを送信したことを意味する.実は私たちはViewDetail()を通じてJavaオブジェクトを送信し、Jacksonライブラリは自動的にJSONファイルに変換します.

    ↑クロムも結果を確認できます.

    2.文章を書くスキル



    ↑書き込み機能はPOST方式(@PostMapping)を使用し、JSONでデータを受信した場合は@ReqeustBodyで自動的にオブジェクトに変換します.
    ↑元ならサービスオブジェクト->DAOオブジェクト->DB保存も完了しなければなりませんが、スキップしたデータをそのまま返します.

    ↑Postmanでリクエストを送信します.

    ↑Controllerが返すオブジェクトはJSPファイルではないため、結果としてJSONファイルも出力されます.