soap vs rest difference
このチュートリアルでは、ParasoftのSOAPおよびRESTサービスについて説明します。ステートレスとステートフル、RESTを介したSOAPのセキュリティ、RESTがSOAPよりも高速である理由などを学習します。
また、サンプルリクエストとSOAPとRESTのレスポンスをそれぞれXML形式とJSON形式で説明しました。
このチュートリアルの終わりに向けて、ParasoftのJSONパスまたはJSONエバリュエーターとドキュメントキーの概念とともに、さまざまなサンプルプログラムで説明されているJSONプログラムを作成できるようになります。
=> ここで完全なSOATestチュートリアルシリーズをチェックしてください 。
このチュートリアルでは、ParasoftまたはSOAtest Automation Toolで使用されるさまざまな動詞について、プログラミング例とそれぞれのHTTP応答コードおよび使用法とともに説明します。今後のチュートリアルで詳しく説明する、SOAtestスイートをより適切に構築する方法を理解できるようになります。
このチュートリアルを終えたら、下部にリストされている質問に答えてみることもできます。
学習内容:
SOAPサービスとは何ですか?
SOAPはSimpleObject AccessProtocolの略です 。プロトコルは、テスト用に定義する一連のルールに他なりません。これは、WSDL(Webサービス記述言語)を使用してWebサービスを記述するRESTとは異なり、「ステートフル」プロトコルです。
SOAPのすべての要求と応答は、XML(Extensible Markup Language)で行われます。 SOAPは、対応するものと比較してより安全です。さまざまなメソッドに独立した処理を提供しないため、「ステートフル」プロトコルと呼ばれます。
なぜSOAPはより安全なのですか?
SOAPとRESTはどちらもデータ保護のためにSSL(Secure Socket Layer)をサポートしますが、要求を行う間、SOAPはRESTサービスにはないエンタープライズレベルの保護のためにWebサービスセキュリティ(WS-SecurityまたはWSSとも呼ばれます)をサポートします。 Webサービスセキュリティ(WS-Security、WSS)は、Webサービスにセキュリティを適用するためのSOAPの拡張機能です。
SOAPのサンプルリクエストボディ
Parasoft TUP true
SOAPのリクエストボディを形成するためのペイロードとして使用されるXMLがあります。すべてのXML言語は、スクリプトの上で定義する必要のあるバージョンで構成されています。 HTMLとは異なり、すべてのXMLファイルでタグを作成できるため、タグについて心配する必要はありません。
SOAPリクエストを介してトークンを生成しようとしている場合は、リクエスト本文でヒットしているURLまたはカスタマイズされたタグの下のXMLとともに、ユーザーIDやパスワードなどの必要なパラメーターを指定するだけです。
以下は、Parasoftのトラフィックビューアのスクリーンショットです。 (結果を確認できるコンポーネント)。
(画像 ソース )
SOAPの顕著な特徴
以下に、SOAPの主な機能の一部を示します。
#1) 生成されたトークンなどのRESTサービスでは任意のSOAPエンベロープを使用できますが、その逆はできません。これは、SOAPを使用してトークンを作成した場合、そのトークンをRESTで使用できることを意味します(HTTPヘッダーマネージャーセクション=>承認の下)。ただし、SOAPリクエストでRESTエンベロープを使用することはできません。
#二) SOAPは、Secure Socket Layerとともに送信にWS-Securityを使用するため、RESTよりも安全です。
#3) SOAPは、要求と応答にXMLのみを使用します。平文などは使用していません。
#4) さまざまなメソッドの独立した処理を提供するRESTとは異なり、SOAPはリクエスト全体を全体として受け取るため、ステートフル(ステートレスではない)です。 SOAPには独立した処理はありません。
RESTサービスとは何ですか?
RESTはRepresentationalStateTransferの略です 。 RESTは、要求と応答を処理するときに複数のメソッドまたは動詞を含む「ステートレス」アーキテクチャです。
RESTでのすべての要求と応答は、XML、JSON(JavaScript Object Notation)、またはプレーンテキストで行われます。 RESTのリクエスト/ペイロードにJSON(軽量)が関与しているため、RESTはSOAPよりも高速です。
各メソッドはRESTで個別に処理されるため、「ステートレス」アーキテクチャと呼ばれます。
RESTが速いのはなぜですか?
RESTはステートレスであるため、SOAPよりも高速です。各動詞は独立して処理され、100万を超えるレコードを含むドキュメント内の特定のフィールドに移動するときにはるかに高速なJSONオブジェクトを利用します。
RESTで使用されるメソッドについて始める前に、JSONとJSONパスについて知っておく必要があります。これは、RESTでデータを送信する最も一般的な形式であるためです。
JSONとは何ですか?
JSONはJavaScriptObjectNotationの略です。 これは、RESTクライアントで一般的に使用される形式です。
自己記述的で理解しやすいです。 RESTメソッドのペイロードセクションでJSONを渡す必要があります。これは軽量のデータ交換フォーマットであり、100万レコードを処理している場合でもRESTサービスをはるかに高速化できます。
JSONを使用したプログラミング
以下は、「電話」と呼ばれるドキュメントが1つしかないサンプルプログラムです。
(画像 ソース )
これは、電話タイプの値を取得する必要があるサンプルJSONプログラムです。このようなシナリオでは、2つの手法を使用してそのフィールドを通過できます。 1つはJSONパスによるもので、もう1つはドキュメントキーによるものです。
#1)JSONパスを処理するときは、次の2つの方法を使用できます。
$.phone(:1).type $('phone')(':1')('type')
#二) ParasoftはJSONパスを許可しないため、トラバースするときに少し単純なドキュメントキーを使用できます。リソースタブのURLと一緒にドキュメントキーを次のように渡すだけです
phone.type
下のスクリーンショットの追加ボタンをクリックしてphone.typeと入力するだけで、完了です。
以下の例では、配列であるロケーションフィールドの最後の要素をトラバースする必要があります。したがって、そのためのJSONパスを記述してみてください。
経験豊富なドットネットインタビューの質問と回答
行番号37と39(上記)に示されているように、ロケーションフィールドの最後の要素への同じトラバースに対して2つの異なるJSONパスが書き込まれています。同様に、JSON(複雑なネストされたドキュメント)を作成し、練習用にJSONパスを記述してみることができます。
結果:
(「ヘルシンボリ」)
と呼ばれるオープンなWebサイトで、必要な数のJSONを試すことができます。 JSONオンラインエバリュエーター
Restfulサービスのメソッド/動詞
RESTサービスは、さまざまなタイプのリクエストの動詞としても知られるさまざまなメソッドを提供します。これらは主に含まれています POST、PUT、PATCH、GET、DELETE、CUSTOM 。
役職
このメソッドは、レコードの作成を担当します。正常に実行されると、HTTP応答コードは201になります。
以下は、POSTを示すサンプルJSONです。
{ “Test”: { “Tester Name”: “Saket Saurav”, “Designation”: “QA”, “Test2”: { “Testing”: “Nested Document”, “Platform”: “Windows” } } }
このJSONをリクエスト本文として渡すと、201応答コードでドキュメントが作成されます。
取得する
これは、ドキュメントまたはレコードを取得するために使用される別のメソッドまたは動詞です。 GETが正常に実行されると、応答コードは200になります。これには、リクエストの本文やペイロードは含まれていません。
あなたがしなければならないのは、「テスト」としてドキュメントキーを使用して、ParasoftのリソースタブでGETメソッドを使用して同じURLを押すだけです。ドキュメントキーを渡さなくても、ドキュメント全体が取得されます。
ドキュメントキーを「Test.Test2」として渡すと、次のレコードが取得されます。
{ “Test”: { “Test2”: { “Testing”: “Nested Document”, “Platform”: “Windows” } } }
プット
このメソッドはドキュメントを更新するために使用され、正常に実行された後、200の応答コードがあります。
POSTとPUTはそれほど違いはなく、コーディング方法は開発者によって異なります。ほとんどの場合、開発者はフィールド値を更新するときにPUTメソッドを使用します。
例えば: POSTによって挿入された上記のJSONドキュメントの値を変更する場合は、PUTメソッドを使用して、更新された値とともにリクエスト本文全体を渡します。
{ “Test”: { “Tester Name”: “Saket Saurav”, “Designation”: “QA”, “Test2”: { “Testing”: “Nested Document”, “Platform”: “Updated Windows” } } }
トラフィックビューアに応答が表示されると、フィールド値は次のように更新されます。
「プラットフォーム」:「更新されたWindows」
パッチ(カスタム)
これは、レコードの更新にのみ使用される別の方法です。ほとんどの開発者は、リソースを最大限に活用するため、PUTメソッドよりもこのメソッドを好みます。ドキュメント内のフィールド値を更新する場合は、レコードの更新された値でそのフィールドのみを渡すだけです。
たとえば、POSTレコードを更新する場合、PATCHの使用中は次のリクエスト本文のみを使用します。
{“Test”: { “Test2”: { “Testing”: “Nested Document”, “Platform”: “Updated Windows” } } }
お気づきのように、ここではPUTメソッドとは異なり、「Test」のフィールド値を渡しませんでした。正常に実行すると、200または201の応答コードが返されます。
削除
名前自体が示すように、設定とも呼ばれるレコードが削除されます。これにはGETのようなリクエスト本文は含まれず、多くの場合、応答コードは203(コンテンツなし)です。上記のJSONでドキュメント全体を削除する必要がある場合は、ドキュメントキーをとして渡すだけです。
Test
これにより、ドキュメント全体が削除されます。ドキュメントキーをまったく渡さないと、ドキュメント全体が削除されます。
インタビュアーの罠
Q#1)インタビュアーのほとんどは、削除操作の応答コードが204ではなく200として成功したと尋ねると、混乱しようとします。このような状況では、どうすればよいですか?バグとして報告する必要がありますか?
回答: 上記の質問に対する答えは簡単です。バグを報告する必要はありません。代わりに、開発者に相談するか、他の削除操作の応答を観察してみてください。応答コード200は常に正常な操作を示し、204はDELETEに固有です。開発者がすべての成功した操作に200を使用した可能性があります。
Q#2)100万行のコードのJSONリクエストでデータベースを使用せずに、特定のフィールド値が正しいかどうかを確認するにはどうすればよいですか?
回答: 答えは、GET操作でドキュメントキーを送信することです。サンプルURLは次のようになります。
https://resource-name.com/context-key/document-key
上記のURLでは、コンテキストキーは100万レコードの特定のJSONを一意にフェッチし、ドキュメントキーはそのレコードの特定のフィールド値をフェッチします。
Q#3)JSONの上にドキュメント名を指定しない場合、ドキュメント全体をフェッチするためにドキュメントキーとして何を渡す必要がありますか?
回答: あなたは何でも渡すことができます。はい、正確に。ドキュメント名が指定されておらず、ドキュメントに存在するフィールドと値のみがある場合は、任意の文字列値を渡すことができます。その文字列は自動的にドキュメントキーとして扱われます。
概要
ここまでで、SOAPおよびREST Webサービス、それらの構造、それらの間の主な違い、それらの機能および使用法について公正な考えを持っているはずです。
さらに、このチュートリアルでは、評価目的でJSONプログラミングとJSONパスとともに、RESTサービスで使用される最も一般的/重要なメソッド(動詞とも呼ばれます)について説明しました。
前のチュートリアル | 次のチュートリアル
推奨読書
- JSONチュートリアル:初心者向けの紹介と完全ガイド
- データベーステストへのXMLの簡単なアプローチ
- 2021年の10の最高のAPIテストツール(SOAPおよびREST APIテストツール)
- 15以上のSoapUIチュートリアル:最高のWebサービスAPIテストツール
- SoapUIおよびSoapUIProの7つの重要な機能-チュートリアル2
- SoapUIでモックサービスと動的応答を作成する方法
- SoapUI ProでRESTプロジェクトを作成する方法:チュートリアル#13
- ステップバイステップのSoapUIダウンロードおよびインストールプロセス– SoapUIチュートリアル#3
- トップ45のWebサービスインタビューの質問と回答(RESTful、SOAP、セキュリティの質問)