Restful web Services----第2章ノート

2007 ワード

Restful web Services----第2章ノート


リソースの識別


RESTful Webサービスを開発する最初のステップの1つは、すべてのクライアントがサーバと対話するために使用するリソースを識別し、分類するリソースモデルを設計することです.

リソースの粒度の選択方法


ネットワーク効率、表現量、クライアントの使いやすさによって、リソースの粒度を決定するのに役立ちます.粗粒度設計は、リッチクライアントアプリケーションに便利です.より細かいリソース粒度は、キャッシュの要件をよりよく満たすことができます.したがって、リソースの粒度は、クライアントとネットワークの観点から決定されるべきである.次の要因は、リソースの粒度にさらに影響を及ぼす可能性があります.
  • キャッシュ可能
  • 修正頻度
  • 可変性リソース粒度を注意深く設計し、より多くのキャッシュを使用することを確保し、修正頻度を低減する.あるいは、キャッシュの使用が少なく、変更頻度が高い、または可変データから可変データを分離することで、クライアントとサービス側の効率を向上させることができます.

  • リソースをコレクションに整理する方法


    リソースをコレクションに整理すると、クライアントおよびサーバがリソースのセットを参照と見なし、コレクション上でクエリーを実行したり、コレクションをファクトリとして新しいリソースを作成したりすることができます.
    アプリケーション固有の条件に基づいて類似のリソースを識別し、一般的な例として、同じデータベースSchemaを共有するリソース、同じ特性attributeまたは属性propertyを有するリソースまたはクライアントが類似したリソースと見えるリソースがある.

    計算または処理関数のサポート方法


    処理関数を1つのリソースと見なし、処理関数出力を含むHTTP GETを使用して記述を取得する.クエリー・パラメータを使用して、処理関数に入力します.RESTは、アプリケーション分野の「物事」または「エンティティ」リソースにのみ適用されます.これは、RESTアーキテクチャ制約の最も一般的な理解の一つです.

    コントローラを使用してリソースを操作するタイミングと方法


    RESTful Webサービスでは、コントローラはサーバとクライアントの独立性を向上させ、ネットワーク効率を改善し、サーバを原子操作の形で複雑な操作を実現するのに役立ちます.コントローラは、サーバが複雑なビジネス操作を抽象化し、クライアントにこれらの操作をトリガーする方法を提供するのに役立つ、リソースを原子的に変更できるリソースです.
    例:
    クライアントは、本の30日間の無料オンラインバージョンを提供し、15%の割引を提供します.サーバには、30日間の無料アクセスを提供しているすべての図書が含まれているコレクションが維持されています.クライアントは、POSTリクエストを送信して、その本をコレクションに追加することができます.
    # 
    POST /30daybookoffers HTTP/1.1
    Host: www.example.org
    Content-Type:application/x-www-urlencoded
    id=1234&from=2009-10-10&to=2000-11-10
    # 
    HTTP/1.1 201 Created
    Location: http://www.example.org/30dayebookoffer/1234
    Content-length:0
    

    ビジネス上でこの2つの変更を原子で完了するように要求された場合、コントローラリソース、すなわち割引の追加と30日間の無料アクセスの要求を使用できます.
    要求において、パラメータop=updateDiscountおよびop=30dayOfferは、動作を識別するために使用され、これにより、トンネルは、要求の可視部分(例えば、URIの要求、HTTPメソッドの使用、要求ヘッダおよびメディアタイプの使用)が動作を明確に記述しないため、プロトコルレベルでの可視性を低下させる.トンネルを避けるためには、すべての代価を惜しまず、操作ごとに異なるリソースを使用します.