意味
RESTサーバーへの接続はHTTPを介して行われるため、ABAPでHTTP通信を実行するには、タイプCL_HTTP_CLIENTのインスタンスを作成する必要があります。作成されたオブジェクトは、RESTクライアント自体を構築するための入力であり、HTTP通信を処理します。
タイプCL_HTTP_CLIENTのオブジェクトを作成するには、次の2つのオプションがあります。
-
宛先による作成:HTTP宛先はSM59トランザクションで事前に作成され、RESTサービスアクセスの認証とサービスURIに関する情報が保存されます。
この場合、ファクトリメソッドCL_HTTP_CLIENT => CREATE_BY_DESTINATIONを使用して、ABAPHTTPオブジェクトをインスタンス化します。
-
URLで作成:必要なすべての接続データは、オブジェクトの構築時に指定されます。つまり、宛先へのリンクはありません。
この場合、ファクトリメソッドCL_HTTP_CLIENT => CREATE_BY_URLを使用して、ABAPHTTPオブジェクトをインスタンス化します。
例:
このコードフラグメントは、CL_HTTP_CLIENT => CREATE_BY_URLを介してHTTPクライアントを作成し、認証情報を設定します。
-
RESTサーバーのベースURIは、構築時に指定されます。このURIパスは、対応するか、ICFノードパス(トランザクションSICFを介して作成された)の一部である必要があります。返されたHTTPクライアントオブジェクトは、RESTクライアント内で使用されます。
-
ABAPシステムでは常にユーザーコンテキストが必要であるため、ユーザーアカウントデータはAUTHENTICATEメソッドを介して指定されます。これは、呼び出されたURIのICFノードでユーザーアカウントが指定されているパブリックサービスを呼び出す場合にのみ省略できます。このような公共サービスにはいくつかの欠点があることに注意してください(サービス拒否攻撃、CSRFトークン保護が不可能など)。
-
SAPクライアントは、ヘッダ項目sap-client(パブリック定数IF_HTTP_FORM_FIELDS_SAP => SAP_CLIENT)で指定されます。これは、URIクエリパラメータの代替です。ap-client = xxx(例: http:// myserver:4711 / sap / bc / rest_cars?sap-client = 100)。HTTPヘッダー設定は、URLクエリパラメーター設定を無効にします。もう1つの方法は、対応するICFノードの1つにクライアントを設定することです。これは、最も柔軟性の低いアプローチです。
-
HTTPクライアントが後続の複数の呼び出しに再利用される場合、または基本認証(X509クライアント認証、SAMLなど)を使用していない場合は、属性を有効にしてABAPサーバーから返されたCookieを受け入れる必要があります。propertytype_accept_cookie。指定されたコードでは、受信したログオンチケットが再利用されるため、呼び出しごとにクライアントを認証する必要はありません。後続のREST呼び出しでHTTPクライアントを再利用しない場合は、このCookieを設定する必要はありませんが、呼び出しごとにHTTPクライアントを再作成する必要があります。
属性の設定propertytype_accept_cookieABAPサーバーとのセッションがあることを意味するわけではありません(RESTサービスはステートレスです!)。これには、セッションCookieを設定する必要があります。ステートレス通信のREST原則と矛盾するため、HTTP接続を維持するセッション(RFC宛先(トランザクションSM59)またはHTTPヘッダーを介して設定)を使用しないでください。