WebサービスインターフェースとHTTPインターフェース学習メモ 1. Webサービスの概念

WebサービスインターフェースとHTTPインターフェース学習メモ 1. Webサービスの概念

目次: はじめに

1. Webサービスの概念

2. Webサービスインターフェイスのテスト

3. HTTPインターフェース

4. HTTPプロトコルの構造


1. Webサービスの概念

Web は、プラットフォームやプログラミング言語に依存しない方法でアプリケーションが相互に通信できるようにするテクノロジーです。 Web サービスは、標準化された XML メッセージングを通じてネットワーク経由でアクセスできる一連の操作を記述するソフトウェア インターフェイスです。 XML 言語ベースのプロトコルを使用して、実行される操作や別の Web サービスと交換されるデータを記述します。このように対話する一連の Web サービスは、サービス指向アーキテクチャ (SOA) の特別な Web サービス アプリケーションを定義します。

WebService とは、簡単に言うと SOA (サービス指向プログラミング) アーキテクチャであり、言語やプラットフォームに依存せず、異なる言語間の相互呼び出し (xml で記述) を実現し、HTTP プロトコルベースのサービスを実行できます。インターネット: ネットワーク アプリケーション間の対話。 SOAP を介して Web 上で提供され、WSDL ファイルを使用して記述され、UDDI を介して登録されるソフトウェア サービス。

XML: (拡張マークアップ言語) 拡張マークアップ言語。短期の一時的なデータ処理と World Wide Web にとって、これは Soap の基礎です。

Soap: (シンプル オブジェクト アクセス プロトコル) シンプル オブジェクト アクセス プロトコル。 XML Web Serviceの通信プロトコルです。ユーザーが UDDI を通じて WSDL 記述ドキュメントを見つけると、SOAP を通じて作成した Web サービス内の 1 つ以上のオペレーションを呼び出すことができます。 SOAP は、XML ドキュメントの形式でメソッドを呼び出すための仕様であり、HTTP(S) や SMTP などのさまざまな基礎となるインターフェイスをサポートできます。

WSDL: (Web サービス記述言語) WSDL ファイルは、一連の SOAP メッセージとその交換方法を記述する XML ドキュメントです。ほとんどの場合、ソフトウェアによって自動的に生成され、使用されます。

UDDI (Universal description, Discovery, and Integration) は、主に Web サービス プロバイダーとユーザーを対象とした新しいプロジェクトです。ユーザーが Web サービスを呼び出す前に、サービスにどのビジネス メソッドが含まれているかを確認し、呼び出されるインターフェイス定義を見つけて、サーバー側でソフトウェアをコンパイルする必要があります。UDDI は、システムが、Web サービスに基づいて対応するサービスを見つけるようにガイドするメカニズムです。説明文書。 UDDI は、SOAP メッセージング メカニズム (標準 XML/HTTP) を使用して、登録情報を公開、編集、参照、検索します。 XML 形式を使用してさまざまなタイプのデータをカプセル化し、それを登録センターに送信するか、登録センターが必要なデータを返します。

2. Webサービスインターフェイスのテスト

Web サービス インターフェイスをテストするには、soapUI を使用してテストします。単純に、soapUI を使用して Web サービス インターフェイスを呼び出してみましょう。

1.soapUIを開き、新しいsoapプロジェクトを作成します。

2. 例として天気予報の wsdl アドレスを取り上げ、soapUI をインポートして、その中のすべてのインターフェイス情報を表示しましょう。

wsdl アドレス http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

3. インターフェイスとメッセージを表示し、パラメータを入力して直接呼び出します

 

メッセージを送る:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://WebXml.com.cn/">
   <soapenv:Header/>
   <soapenv:本文>
      <web:getSupportCity>
         <!--オプション:-->
         <ウェブ: byProvinceName>北京</web:byProvinceName>
      </web:getSupportCity>
   </soapenv:Body>
</soapenv:Envelope>

返信メッセージ:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <getSupportCityResponse xmlns ="http://WebXml.com.cn/">
         <getSupportCityResult>
            <string>北京 (54511)</ string>
            <string>上海 (58367)</string>
            <string>天津 (54517)</string>
            <string>重庆 (57516)</string>
         </getSupportCityResult>
      </getSupportCityResponse>
   </soap:Body>
</soap:Envelope>

1. ルート要素: エンベロープ。

2. ヘッダー要素:: これは強制的に表示されるものではなく、プログラマによって制御され、主にユーザー名やパスワードなどの追加情報を運ぶために使用されます。

3. 本体: 呼び出しは正しいです。本体要素の内容は、WSDL で要求される形式に準拠している必要があります。

3. HTTPインターフェース

HTTP プロトコルは TCP プロトコルに基づいています。ブラウザはサーバーから Web ページ データを取得する必要がある場合、HTTP リクエストを発行します。 Http は TCP 経由でサーバーへの接続チャネルを確立します。このリクエストに必要なデータが完了すると、Http は直ちに TCP 接続を切断します。このプロセスは非常に短いです。したがって、HTTP 接続は短い接続であり、ステートレス接続です。
HTTP プロトコルの主な機能は次のように要約できます。
1. クライアント/サーバー モードをサポートします。
2. シンプルかつ高速: クライアントがサーバーにサービスを要求する場合、要求メソッドとパスを送信するだけで済みます。一般的に使用されるリクエスト メソッドは、GET、HEAD、および POST です。各メソッドは、クライアントとサーバー間の異なるタイプの接続を指定します。 HTTP プロトコルは単純であるため、HTTP サーバーのプログラム サイズは小さく、通信速度は非常に高速です。
3. 柔軟性: HTTP では、あらゆるタイプのデータ オブジェクトの送信が可能です。転送されるタイプは Content-Type によってマークされます。
4. 接続なし: 接続なしの意味は、各接続が 1 つのリクエストのみを処理するように制限することです。サーバーはクライアントの要求を処理し、クライアントの応答を受信した後、接続を切断します。この方法により、送信時間が節約されます。
5. ステートレス: HTTP プロトコルはステートレス プロトコルです。ステートレスとは、プロトコルにトランザクション処理のためのメモリ機能がないことを意味します。ステータスがないということは、後続の処理で以前の情報が必要な場合にその情報を再送信する必要があることを意味し、その結果、接続ごとに転送されるデータ量が増加する可能性があります。一方、事前の情報が必要ない場合、サーバーはより速く応答します。

 URL解析

    WWW上では、各情報資源はインターネット上で統一された固有のアドレスを持ち、このアドレスをURL(Uniform Resource Locator、Uniform Resource Locator)といい、ネットワークアドレスを指すWWWのUniform Resource Locatorです。 HTTP プロトコルはクライアント/サーバー アーキテクチャで動作します。ブラウザは HTTP クライアントとして、URL を介してすべてのリクエストを HTTP サーバー、つまり WEB サーバーに送信します。 Webサーバーは、受信したリクエストに基づいて応答情報をクライアントに送信します。

URL は、リソース タイプ、リソースが保存されているホスト ドメイン名、リソース ファイル名の 3 つの部分で構成されます。

URL の一般的な構文形式は次のとおりです (角括弧 [] はオプションです)。

プロトコル://ホスト名[:ポート]/パス/[;パラメータ][?クエリ]#fragment

 次の URL を例として取り上げます。

http://blog.sina.com.cn/s/blog_537ad6610102xtb1.html?tj=hist

1. プロトコル部分は、ページが http プロトコルを使用していることを意味します。インターネットでは、HTTP、FTP など、さまざまなプロトコルが使用されます。 「HTTP」の後の「//」は区切り文字です。

2. ドメイン名の部分 blog.sina.com.cn には、192.168.55.14:8080 のように、IP アドレスをドメイン名として使用することもできます。ここで、8080 はポートで、「:」は次のように使用されます。ドメイン名とポートの間の区切り文字。ポートは URL の必須部分ではありません。ポート部分を省略すると、デフォルトのポート 80/tcp が使用されます。

3. ドメイン名の後の最初の「/」から最後の「/」までが仮想ディレクトリ部分です。仮想ディレクトリも URL の必須部分ではありません。この例の仮想ディレクトリは「/s/」です。

4. ファイル名部分:ドメイン名の後ろの最後の「/」から始まり「?」で終わるファイル名部分です、「?」がない場合はドメイン名の後ろの最後の「/」から始まります。ドメイン名で「#」で終わる がファイル部分、「?」と「#」がない場合はドメイン名の後ろの「/」から最後までがファイル名部分となります。この例のファイル名は「blog_537ad6610102xtb1.html」です。ファイル名部分は URL の必須部分ではありません。この部分を省略した場合は、デフォルトのファイル名が使用されます。

5.アンカー部:「#」の先頭から末尾までがアンカー部です。アンカー部分は URL の必須部分ではありません (位置決めとして理解できます)

6. パラメータ部: 「?」から「#」で始まる部分はパラメータ部であり、検索部、クエリ部とも呼ばれます。この例のパラメータ部分は「7. パラメータ部分:「?」から」です。 「」と「#」の間の部分はパラメータ部分で、検索部分やクエリ部分とも呼ばれます。この例では、パラメータ部分は「boardID=5&ID=24618&page=1」です。パラメータは複数指定できます。許可されるパラメータ。パラメータ間の区切り文字として「&」を使用します。」パラメータには複数のパラメータを使用でき、パラメータ間の区切り文字として「&」が使用されます。

4. HTTPプロトコルの構造

HTTPリクエストメッセージ

クライアントはサーバーに HTTP リクエストを送信します。リクエスト メッセージには次の形式が含まれます。

これは、リクエスト行、リクエストヘッダー、空行、リクエストデータの 4 つの部分で構成されます。​ 

形式は次のとおりです。

<リクエスト行>
<ヘッダー>
<空白行>
[<リクエスト本文>

1.リクエストライン

リクエスト行は、スペースで区切られたリクエスト メソッド フィールド、URL フィールド、HTTP プロトコル バージョン フィールドの 3 つのフィールドで構成されます。たとえば、GET /index.html HTTP/1.1。

HTTP プロトコルのリクエスト メソッドには、GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT があります。
最も一般的に使用されるメソッドは次のとおりです。
GET メソッド: ブラウザのアドレス バーに URL を入力して Web ページにアクセスする場合、ブラウザは GET メソッドを使用します。サーバーからデータを取得します。リソース、

POST メソッドは、リクエストされたサーバーがリクエストに添付されたデータを受け入れる必要があり、フォームの送信によく使用されます。
2. リクエスト ヘッダー

リクエストヘッダーはキーワードと値のペアで構成され、1 行に 1 つのペアがあり、キーワードと値は英語のコロン「:」で区切られます。リクエスト ヘッダーは、クライアントのリクエストについてサーバーに通知します。一般的なリクエスト ヘッダーは次のとおりです。

ユーザーエージェント: リクエストを生成したブラウザのタイプ。

Accept: クライアントによって認識されるコンテンツ タイプのリスト。

ホスト: 要求されたホスト名。複数のドメイン名が同じ IP アドレスにあることを許可します。つまり、仮想ホストです。

3.空行

最後のリクエスト ヘッダーの後には空行が続き、これ以上続くリクエスト ヘッダーがないことをサーバーに通知するために、キャリッジ リターンとライン フィード文字が送信されます。

4. リクエストテキスト

リクエストデータはGETメソッドではなくPOSTメソッドで使用されます。 POST メソッドは、顧客がフォームに記入する必要がある状況に適しています。リクエスト データに関連して最も一般的に使用されるリクエスト ヘッダーは、Content-Type と Content-Length です。

HTTP応答メッセージ

リクエスト メッセージを受信して​​解釈した後、サーバーは HTTP 応答メッセージを返します。

HTTP 応答も、ステータス行、メッセージ ヘッダー、応答本文の 3 つの部分で構成されます。

メッセージ形式:

<status-line>
<headers>
<blank line>
[<response-body>]


1. ステータス行の形式は次のとおりです。

HTTP バージョン ステータス コード 理由フレーズ CRLF

このうち、HTTP-Version はサーバーの HTTP プロトコルのバージョンを表し、Status-Code はサーバーから返された応答ステータス コードを表し、Reason-Phrase はステータス コードのテキスト説明を表します。
ステータス コードは 3 桁で構成されます。最初の桁は応答のタイプを定義し、5 つの可能な値があります:

1xx: 指示情報 -- リクエストが受信されたことを示し、処理を続行します。
2xx: 成功 -- リクエストが正常に受信、理解、受け入れられたことを示します。 a>
3xx: リダイレクト -- リクエストを完了するにはさらに操作が必要です。
4xx: クライアント エラー -- リクエストに構文エラーがあるか、リクエストを実行できません。 >
5xx : サーバー側エラー - サーバーは法的なリクエストを実装できませんでした
一般的なステータス コード、ステータスの説明、指示:
200 OK //クライアント リクエストは成功しました a> 403 Forbidden //サーバーはリクエストを受信しましたが、サービスの提供を拒否しました< /span> 500 Internal Server Error //サーバーで予期しないエラーが発生しました< /span> 例: HTTP/1.1 200 OK (CRLF ) 503 Server Unavailable //サーバーは現在クライアントのリクエストを処理できず、一定時間が経過すると回復する可能性があります。 通常 404 Not Found //要求されたリソースが存在しません。例: エラーが入力されました URL 401 Unauthorized //リクエストは承認されていません。このステータス コードは WWW-Authenticate と同じである必要があります。ヘッダー フィールドを一緒に使用します。 
400 Bad Request //クライアント リクエストには構文エラーがあるため、サーバーが理解できません





2. レスポンスヘッダー

レスポンスヘッダにはサーバーの基本情報とデータの説明が記述されており、サーバーはこれらのデータの説明情報を利用して、しばらくして返信するデータの処理方法をクライアントに通知することができます。

3. 応答テキスト

レスポンスボディはレスポンスのメッセージボディです。純粋なデータの場合は純粋なデータが返されます。リクエストが HTML ページの場合は HTML コードが返されます。JS の場合は JS コードが返されます。

投稿と取得の違い

リクエストの取得: サーバーからリクエストを取得します。データは URL に配置され、長さ制限があります。

リクエストの送信: リクエストをサーバーに送信します。データは本文に配置され、長さ制限はありません。より安全です。

http インターフェイスは、一般的なデータ型である json 文字列を返します。

インターフェースの戻り値。

{

"error_code": 0,

"stu_info": [

{

"id": 1,

"name": "灏忛粦",

"sex": 男",

"age": 18,

"addr": "北京市海淀区",

"grade": "三年二班",

"phone": "18612532941",

"gold": 11212

}

]

}

テストインターフェイス呼び出しドリル

 インターフェースを取得する

  • 请求URL  http://api.nnzhp.cn/api/user/stu_info
  • リクエストメソッドget
  • リクエストパラメータ

                       パラメータ名 必須 タイプ 説明

                       stu_name は文字列の学生名です

1. ブラウザから直接電話をかける

2.郵便配達員を使用して電話をかける

postman が get メソッドを選択すると、本文が無効になり、get メソッドの http インターフェイス リクエストによって通常はデータが URL に配置されることがわかります。

return メソッドも json 文字列の形式です。

 3. jmeter を使用して get メソッド呼び出しをテストします

スレッドグループの作成

HTTPリクエストを追加

ドメイン名、URLを入力し、リクエスト方法を選択し、キーを追加します

ビュー結果ツリーを追加

実行インターフェース

実行結果を表示し、結果ツリーでデータを返すことができます。

ポストリクエストインターフェース

ログインインターフェース

  • 请求URL  http://api.nnzhp.cn/api/user/login
  • リクエスト方法 投稿
  • リクエストパラメータ パラメータはキーと値の形式です

                       パラメータ名 必須 タイプ 説明

                       ユーザー名は文字列のユーザー名です

                       passwdは文字列パスワードです

     

       登陆用户名:niuhanyang

       密码:aA123456

戻りパラメータの説明

                      パラメータ名 タイプ 説明

                       Error_code int エラー エンコード、0 は操作が成功したことを示します

                       Login_info オブジェクト ログインオブジェクト情報

                       userId int ユーザー ID

                       署名文字列 署名

                       Login_time string ログイン時刻

 1.郵便配達員に電話する

postメソッドのパラメータはbodyに配置されており、URLにパラメータを配置するのは無効であることがわかります。

送信する前に本文にパラメータを入力してください

これを本文に記述し、キーと値の形式でパラメーターを渡し、json 文字列を返します。戻りパラメーターの説明を参照して、ログインが成功したことを確認します。

2. jmeter を使用して通話テストを実行する

jmeter を開く -> 追加 -> スレッド -> スレッド グループ

 

 スレッドグループに追加 -> サンプラー -> HTTP リクエスト

 

 ドメイン名、URLを入力し、メソッドとして投稿を選択し、パラメータを入力します。

実行して結果の戻り値を確認する

学生情報インターフェースを追加

  • 请求URL:http://api.nnzhp.cn/api/user/add_stu
  • リクエスト方法 投稿 
  • パラメータ、入力パラメータはjson型です

                        アウトウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトウェイウェイウェイウェイウェイバックウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトアウトアウトアウトアウトウェイアウトアウトアウトアウトアウトアウトム 一緒に右、一緒に右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右アウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトダウンダウン録音

                       名前は文字列の生徒名です

                       グレードは文字列クラスです

                      電話は糸電話です

                      「

                       Age 文字列なし 年齢、渡されない場合、デフォルトは 18 です

                       文字列なし 住所。渡されない場合、デフォルトは北京市昌平区です。

戻りパラメータの説明

                       パラメータ名 タイプ 説明

                       。

                       msg 文字列プロンプトメッセージ

上で説明したように、入力パラメーターの形式が json の場合、次のようにキーと値の形式でパラメーターを渡すことはできません。

ここで、正しいパラメータ入力メソッドを使用して呼び出しを行います。

1.郵便配達員の呼び出し

postman で、メソッドを post として選択し、URL アドレスを入力し、本文で raw を選択し、パラメーターを json 文字列形式で入力します。

2. jmeter を使用してインターフェイスを呼び出します

jmeter がどのように呼び出しを行うかを見てみましょう

httpリクエストを作成し、ドメイン名、パス、メソッドをpostとして入力し、本文データにjsonを入力して実行します。

リクエストメッセージの内容は、結果ツリーのリクエスト項目で確認できます。

応答データの応答結果を確認すると、実行は成功しています。

学生金貨チャージ

  • 请求URL:http://api.nnzhp.cn/api/user/gold_add
  • リクエスト方法 投稿 
  • パラメーター 、

    このインターフェースには権限検証があり、管理者ユーザーのみが操作を実行できます。Cookie を追加する必要があります。

    Cookie のキーはログインしたユーザー名で、値はログイン インターフェイスから取得され、ログインが成功すると署名が返されます。

                        アウトウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトウェイウェイウェイウェイウェイバックウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトアウトアウトアウトアウトウェイアウトアウトアウトアウトアウトアウトム 一緒に右、一緒に右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右アウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトダウンダウン録音

                       Stu_id は int 学生 ID です

                       gold は金貨の整数です

戻りパラメータの説明

                       パラメータ名 タイプ 説明

                       Error_code int エラー エンコード、0 は操作が成功したことを示します

                       msg 文字列プロンプトメッセージ

上で説明したように、入力パラメータ フォームには Cookie を追加する必要があります。 

1. 郵便配達員に電話してクッキーを追加する方法

簡単に言うと、Cookie はユーザーのブラウザに保存されるキーと値のペアです。

Cookie に関して言えば、セッションは欠かすことができません。セッションとは何ですか? セッションとは、サーバー上に保存されるキーと値のペアです。通常、セッションは頻繁に使用されるため、キャッシュに保存されます。改善したい場合は、パフォーマンスでは、セッションを直接メモリに保存します。

まず、次のように「学生情報の取得」インターフェースを通じて学生の ID 情報を表示し、次に「ログイン」インターフェースを通じて署名値を取得します。 テスト ユーザーを例に挙げます。

クエリID=2341

符号の値は次のとおりです: cd2b43f1688e472e3a516b5a2c6831e8

生徒用の金貨を追加します

2. jmeter を使用してインターフェイスを呼び出します

jmeter を使用して Cookie を含む http リクエストをテストするには、http Cookie マネージャーを追加する必要があります

まずはCookieが追加されて実行される様子を見てみましょう。

Cookie が追加されていない場合、実行が失敗することがわかります。

ここで httpcookie マネージャーを追加します。右クリックして追加 -> 構成コンポーネント -> HTTP cookie マネージャー

Cookie値を追加する

要求されたデータを実行して表示する

 生徒の情報をすべて取得する

  • 请求URL:http://api.nnzhp.cn/api/user/all_stu
  • リクエストメソッドget
  • パラメータはヘッダー情報を追加する必要があります。キーはReferer、値はhttp://api.nnzhp.cn/です。

                    

戻りパラメータの説明

                       パラメータ名 タイプ 説明

                       Error_code int エラー エンコード、0 は操作が成功したことを示します

                       All_stu リストのプロンプト情報

1.ヘッダーを追加せずに、ブラウザのアドレス バーを使用して直接アクセスした結果を見てみましょう。

以下に示すように、アクセス用のヘッダーが追加されていない場合は、オリジンが間違っていることを示すプロンプトが表示されます。

 

 2. postman を使用して電話をかけ、ヘッダー情報を追加して電話をかける

実行すると、結果にすべての学生ユーザー情報が表示されます

3. jmeter を使用して通話テストを実行する

httpリクエストを追加

右クリックして追加 -> コンポーネントの構成 -> http ヘッダー マネージャー

実行結果は成功し、生徒情報が表示されます。

 

ファイルアップロードタイプ

  • 请求URL:http://api.nnzhp.cn/api/file/file_upload
  • リクエスト方法 投稿 
  • パラメータ

                        アウトウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトウェイウェイウェイウェイウェイバックウェイアウトウェイアウトウェイアウトウェイアウトウェイアウトアウトアウトアウトアウトウェイアウトアウトアウトアウトアウトアウトム 一緒に右、一緒に右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右、右アウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトダウンダウン録音

                       ファイルはファイル ファイルです     

戻りパラメータの説明

                       パラメータ名 タイプ 説明

                       Error_code int エラー エンコード、0 は操作が成功したことを示します

                       msg 文字列プロンプトメッセージ

1. postman を使用して電話をかけ、URL アドレスを入力し、キーの種類としてファイルの種類を選択します。

アップロードするファイルを選択してください

操作は正常に実行されました

 2. jmeter を使用して呼び出します

実行されました、操作は成功しました

最後に書きます

この記事が良いと思われる場合は、 いいね!、共有、メッセージを残してください 。これにより、さらに多くの情報を提供できるようになります。高品質 記事作成の最強のモチベーション!

この記事を読んで私の理解が間違っていると思われる方がいらっしゃいましたら、コメントや議論を歓迎します〜

以下のグループに参加して、他の専門家とコミュニケーションをとり、学ぶこともできます。

 

おすすめ

転載: blog.csdn.net/m0_70618214/article/details/128868984