SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Content Negotiation and the REST Library

使用する

RESTライブラリは、ヘルパーメソッドCL_REST_HTTP_UTILS=>NEGOTIATE_CONTENT_TYPEを使用したコンテンツタイプのネゴシエーションをサポートします。「コンテンツネゴシエーションの基本」セクションで説明されている他のすべての受け入れヘッダーを使用できますが、それに対応するヘルパーメソッドがありません(また、ヘルパーメソッドは必要ありません)。

プロセス

RESTクライアントは、受信するコンテンツタイプを示すリソースリクエストとともにAcceptリクエストヘッダーを送信します。クライアントのコンテンツタイプ入力は、サーバー側で要求されたリソースに対してサポートされているコンテンツタイプと照合されます。最適な一致がサーバーの実装に返され、実際のコンテンツを生成するためにそこで使用する必要があります。条件付き情報メソッドのシグネチャは、条件付きリクエストを処理するためにRESTライブラリに必要な値を提供します。

            * <SIGNATURE>---------------------------------------------------------------------------------------+* | Static Public Method CL_REST_HTTP_UTILS=>NEGOTIATE_CONTENT_TYPE* +-------------------------------------------------------------------------------------------------+* | [--->] IV_HEADER_ACCEPT               TYPE        STRING* | [--->] IT_SUPPORTED_CONTENT_TYPE      TYPE        STRING_TABLE* | [<-()] RV_CONTENT_TYPE                TYPE        STRING* | [!CX!] CX_REST_PARSER_ERROR* +--------------------------------------------------------------------------------------</SIGNATURE>         

メソッドパラメータ:

  • IV_HEADER_ACCEPT:これはHTTPリクエストから読み取られたヘッダー値です。メソッドIF_REST_REQUEST〜GET_HEADER_FIELDを使用して、ヘッダー値を読み取ります。インターフェイスIF_HTTP_HEADER_FIELDSの定数を使用して、読み取るヘッダーを指定します(たとえば、値IF_HTTP_HEADER_FIELDS => ACCEPTにはAcceptヘッダーが含まれます)。

  • IT_SUPPORTED_CONTENT_TYPE:サーバーでサポートされているコンテンツタイプのリストを指定します。このメソッドを使用するには、サーバー実装によって事前に入力する必要があります。

  • RV_CONTENT_TYPE:クライアントが最も好むコンテンツタイプを返します。最初の戻り値は、サーバーの指定されたサポートされているコンテンツタイプのいずれも、クライアントのコンテンツタイプ要件をサポートできないことを示します。

これは、ヘルパーメソッドの使用法を示すRESTサーバーのGETメソッド実装のコードフラグメントです。要求されたリソースのコンテンツタイプを作成するために使用可能なコンテンツタイプが見つからない場合は、HTTP 406(「受け入れられない」)リターンコードで示されます。

            method if_rest_resource~get....  data:        lt_supp_cont_type type string_table,        lv_content_type type string,        lv_accept type string.* create the list or the content types supported by this REST server  append:    if_rest_media_type=>gc_appl_xml to lt_supp_cont_type,    if_rest_media_type=>gc_appl_json to lt_supp_cont_type,    if_rest_media_type=>gc_text_plain to lt_supp_cont_type,    if_rest_media_type=>gc_text_all to lt_supp_cont_type.* get accept value from REST client  lv_accept = mo_request->get_header_field( if_http_header_fields=>accept ).* find the best "matching" content type from the supported list using the client's input  try.      lv_content_type = cl_rest_http_utils=>negotiate_content_type(        iv_header_accept          = lv_accept        it_supported_content_type = lt_supp_cont_type ).      if lv_content_type is initial.  " no supported format found -> http 406        mo_response->set_status( cl_rest_status_code=>gc_client_error_not_acceptable ).        mo_response->set_reason( if_http_status=>reason_406 ).        return.      endif.    catch cx_rest_parser_error.      mo_response->set_status( cl_rest_status_code=>gc_server_error_internal ).      mo_response->set_reason( if_http_status=>reason_500 ).      return.  endtry.* create resource content for the client based on the setting in 'lv_content_type'...endmethod.         

タイトルとURLをコピーしました