Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

組み込み HTTP コンポーネント

InterSystems IRIS には、HTTP アダプタを使用する組み込みビジネス・ホストが用意されています。これを使用すると、カスタムのビジネス・サービスやビジネス・オペレーションを作成せずに、プロダクションに HTTP サポートを追加できます。HTTP 受信アダプタを使用するビジネス・サービスが必要な場合は、プロダクションに EnsLib.HTTP.GenericServiceOpens in a new tab を追加します。同様に、HTTP 送信アダプタの活用を必要とするプロダクションでは、EnsLib.HTTP.GenericOperationOpens in a new tab を使用できます。

InterSystems IRIS には、プロダクション全体に HTTP 要求または HTTP 応答を伝達するように設計されたメッセージ・クラスも用意されています。このメッセージ・クラス EnsLib.HTTP.GenericMessageOpens in a new tab には、HTTP 要求のヘッダと本文が記述されています。まったくの白紙から EnsLib.HTTP.GenericMessage を構築し、EnsLib.HTTP.GenericOperation を使用してそれを送信する方が有利な場合もあります。このプロセスでは、本文を作成し、ヘッダを記述してから新しいメッセージを作成します。以下に例を示します。

// Build the header
#dim tRESTHTTPHeaders
Set tRESTHTTPHeaders("HttpRequest")="POST"
Set tRESTHTTPHeaders("HTTPVersion")="1.1"

// Build the body
#dim tPOSTStream = ##class(%Stream.GlobalCharacter).%New()
#dim tPOSTJSON = {}
Set tPOSTJSON.projection = []
Do tPOSTJSON.projection.%Push("%Doc")
Do tPOSTJSON.%ToJSON(.tPOSTStream)

// Add more headers
Set tRESTHTTPHeaders("content-length") = tPOSTStream.Size
Set tRESTHTTPHeaders("content-type") = "application/json"

// Create message
Return ##class(EnsLib.HTTP.GenericMessage).%New(tPOSTStream,,.tRESTHTTPHeaders)

メッセージ・ヘッダの詳細

InterSystems IRIS で作成した EnsLib.HTTP.GenericMessage のヘッダの例を以下に示します。

<HTTPHeaders>
  <HTTPHeadersItem HTTPHeadersKey="CharEncoding" xsi:nil="true"></HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="EnsConfigName">ForDocker</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="HTTPVersion">1.1</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="HttpRequest">POST</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="IParams">0</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="RawParams" xsi:nil="true"></HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="TranslationTable">RAW</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="URL">/api/atelier/v4/TEST/action/query</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="accept">application/json, text/plain, */*</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="connection">close</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="content-length">127</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="content-type">application/json</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="cookie">CSPSESSIONID-SP-42773-UP-api-atelier-=001000000000t7LT7VX9SXUNIM7S8yKxK44S$uBbUtzNHVjIAk</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="host">127.0.0.1:55773</HTTPHeadersItem>
  <HTTPHeadersItem HTTPHeadersKey="user-agent">axios/0.21.1</HTTPHeadersItem>
</HTTPHeaders>

EnsLib.HTTP.GenericMessage を白紙から作成する場合は、これらのヘッダがすべて必要なわけではありません。少なくとも、HttpRequestHTTPVersioncontent-type の各ヘッダを定義する必要があります。また、一般的には content-length ヘッダの定義も必要です。

EnsLib.HTTP.GenericOperation を使用しているプロダクションでは、送信アダプタの URL プロパティと共にメッセージの URL ヘッダが処理され、要求の URL パスが判断されます。アダプタの他のプロパティ同様に、URL プロパティは管理ポータルを使用して設定し、プロダクションのビジネス・オペレーションの URL 設定を定義します。URL ヘッダと URL プロパティの動作の詳細は、アダプタの URL プロパティOpens in a new tabを参照してください。

EnsLib.HTTP.GenericMessage.%New() を使用して HTTP メッセージを作成する場合は、ヘッダを渡すためのオプションをいくつか使用できます。一般的に、ヘッダの引数は配列で渡します。ただし、%New メソッドでは、ObjectScript 配列参照、自身の属性のコピー元を伴う %AbstractStream、自身のヘッダのコピー元を伴う %Net.HttpResponse オブジェクト、または 'a=1,b=2,c=3' 形式の文字列としたヘッダも使用できます。

FeedbackOpens in a new tab