---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# NowAPIService クラス - iOS

# NowAPIService クラス - iOS {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：13分

NowAPIService クラスは、指定された ServiceNow REST API に対して要求を実行できるようにする関数を提供します。
{#NowAPIServiceiOSAPI__table_vx2_klw_5pb__entry__3}

| 名前 | タイプ | Description (説明) |
|-|-|-|
| 構成 | [NowServiceConfiguration](https://servicenow-prod.fluidtopics.net/stoU_DsvecOSpmkh8Wo3FA#NowServiceConfigurationiOSStruct "NowServiceConfiguration 構造体は、フィーチャ サービスの構成情報を定義します。") | プロトコルに関連付けるサービス構成。 |
[表 : 1. プロパティ]

{#NowAPIServiceiOSAPI__table_vx2_klw_5pb}

## NowAPIService - data(エンドポイント:NowAPIEndpoint、queryItems:\[文字列:文字列\]、httpHeaders:\[文字列:文字列\]、body:データ、completion:@escaping(結果\<DataResponse、NowDataError\>) {#ariaid-title2}

指定された ServiceNow REST API にデータを要求し、完了ハンドラーを実行します。
{#NAPIiOS-data_O_A_A_S_O__table_jck_kyp_5pb__entry__3}{#NAPIiOS-data_O_A_A_S_O__mobilesdkiOS-completion_data_dataerror-row}

| 名前 | タイプ | Description (説明) |
|-|-|-|
| エンドポイント向け | [NowAPIEndpoint](https://servicenow-prod.fluidtopics.net/XMcFWgzaOV~4_5IptIS0Ow#NowAPIEndpointiOSProtocol "NowAPIEndpoint プロトコルは、公開されている ServiceNow REST API にアクセスするためのインターフェイスを提供します。") | HTTP メソッド、エンドポイントへの相対パス、パスパラメーター、認証が必要かどうかなど、アクセスする ServiceNow REST API エンドポイントを含むオブジェクト。 |
| クエリアイテム | アレイ | オプション。エンドポイントのキー/値ペアとしてのクエリパラメーター。 デフォルト:nil |
| httpヘッダー | アレイ | オプション。エンドポイントで必要な HTTP ヘッダーをキーと値のペアとして要求します。 デフォルト:nil |
| 本文 | 文字列 | オプション。要求本文のパラメーター。 デフォルト:nil |
| 完了 | @escaping (Result\<DataResponse、NowDataError\>) | REST API コールの完了後に実行する完了ハンドラー。 完了ハンドラーの戻り値: * 成功:REST API コールから返されたデータを含む DataResponse。 * 失敗:NowDataError * `accessToken(アクセストークンプロバイダーエラー)` * AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。 * アクセストークン取得に失敗しました * userSessionError(_エラー:エラー) アクセストークンにエラーがある場合にスローされます。 * `attachmentValidation` 添付ファイルが検証に失敗したときにスローされます。 * `badResponse(statusCode: HTTPStatusCode)` * HTTPStatusCode:インスタンスから受信したステータスコード。 要求が予期しない応答を返した場合にスローされます * `cannotDecodeModel(デコードエラー)` * DecodingError:デコードエラーが検出されました。 Codable モデルを JSON からデコードできない場合にスローされます。 * `cannotDecodeProperty(タイプ:任意、差出人:文字列)` * type:文字列からデコードするラップされた型。 * from:指定されたタイプにデコードする文字列。 文字列でラップされた値を JSON からデコードできない場合にスローされます。 * `cannotEncodeModel(エンコーディングエラー)` * EncodingError:エンコードエラーが検出されました。 Codable モデルを JSON にエンコードできない場合にスローされます。 * `cannotParseResponse` インスタンスからの応答を予期される形式に解析できない場合にスローされます。 * `無効な URL` URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれているか、空の文字列である場合などです。 * `missingAttachmentMetadata` 添付ファイルのメタデータヘッダーがない場合にスローされます。 * `missingServiceConfiguration` 予期されるサービス構成がない場合にスローされます。 * `missingSysID` 予期されるsys_idパラメーターがない場合にスローされます。 * `network(NetworkServiceError)` * genericError(文字列) * operationCanceled * serviceDisabled * serverError(エラー) * systemError(エラー) ネットワークサービスでエラーが発生した場合にスローされます。 {#NAPIiOS-data_O_A_A_S_O__NowDataErroriOS-ul-enum} {#NAPIiOS-data_O_A_A_S_O__ul_uzx_thj_ppb} |
[表 : 2. パラメーター]

{#NAPIiOS-data_O_A_A_S_O__table_jck_kyp_5pb} {#NAPIiOS-data_O_A_A_S_O__table_kck_kyp_5pb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 3. 返される内容]

{#NAPIiOS-data_O_A_A_S_O__table_kck_kyp_5pb}  
次のコード例は、この関数を呼び出す方法を示しています。

    struct Endpoint: NowAPIEndpoint {
      let httpMethod: HTTPMethod
      let relativePath: String
      let requiresAuthentication: Bool
    }

    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = "/api/now/account"
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)

    apiService.data(for: endPoint, queryItems: ["name": "abel"], httpHeaders: httpHeaders, body: body.data(using: .utf8)) { [weak self] (result) in
      switch result {
        case .success(let response):
        // Data request successful
        case .failure(let error):
        // Data request failed, return NowDataError
        // .failure(error)
      }
    }

## NowAPIService - data(エンドポイント:NowAPIEndpoint、queryItems:\[文字列:文字列\]、httpHeaders:\[文字列:文字列\]、body:データ)非同期スロー {#ariaid-title3}

指定された ServiceNow REST API からのデータを要求します。
{#NAPIiOS-data-async_O_A_A_S_O__table_jck_kyp_5pb__entry__3}

| 名前 | タイプ | Description (説明) |
|-|-|-|
| エンドポイント向け | [NowAPIEndpoint](https://servicenow-prod.fluidtopics.net/XMcFWgzaOV~4_5IptIS0Ow#NowAPIEndpointiOSProtocol "NowAPIEndpoint プロトコルは、公開されている ServiceNow REST API にアクセスするためのインターフェイスを提供します。") | HTTP メソッド、エンドポイントへの相対パス、パスパラメーター、認証が必要かどうかなど、アクセス ServiceNow REST API エンドポイントを含むオブジェクト。 |
| クエリアイテム | アレイ | オプション。キーと値のペアとしてのエンドポイントのクエリパラメーター 。 デフォルト:nil |
| httpヘッダー | アレイ | オプション。エンドポイントで必要な HTTP ヘッダーを キー/値ペアとして要求します。 デフォルト:nil |
| 本文 | 文字列 | オプション。body parameters を要求します。 デフォルト:nil |
[表 : 4. パラメーター]

{#NAPIiOS-data-async_O_A_A_S_O__table_jck_kyp_5pb} {#NAPIiOS-data-async_O_A_A_S_O__table_kck_kyp_5pb__entry__2}

| タイプ | Description (説明) |
|-|-|
| データ応答 | メソッドが成功したときに返されます。REST API コールからのデータ。 |
| NowDataError | メソッドが失敗したときにスローされます。 * `accessToken(アクセストークンプロバイダーエラー)` * AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。 * アクセストークン取得に失敗しました * userSessionError(_エラー:エラー) アクセストークンにエラーがある場合にスローされます。 * `attachmentValidation` 添付ファイルが検証に失敗したときにスローされます。 * `badResponse(statusCode: HTTPStatusCode)` * HTTPStatusCode:インスタンスから受信したステータスコード。 要求が予期しない応答を返した場合にスローされます * `cannotDecodeModel(デコードエラー)` * DecodingError:デコードエラーが検出されました。 Codable モデルを JSON からデコードできない場合にスローされます。 * `cannotDecodeProperty(タイプ:任意、差出人:文字列)` * type:文字列からデコードするラップされた型。 * from:指定されたタイプにデコードする文字列。 文字列でラップされた値を JSON からデコードできない場合にスローされます。 * `cannotEncodeModel(エンコーディングエラー)` * EncodingError:エンコードエラーが検出されました。 Codable モデルを JSON にエンコードできない場合にスローされます。 * `cannotParseResponse` インスタンスからの応答を予期される形式に解析できない場合にスローされます。 * `無効な URL` URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれているか、空の文字列である場合などです。 * `missingAttachmentMetadata` 添付ファイルのメタデータヘッダーがない場合にスローされます。 * `missingServiceConfiguration` 予期されるサービス構成がない場合にスローされます。 * `missingSysID` 予期されるsys_idパラメーターがない場合にスローされます。 * `network(NetworkServiceError)` * genericError(文字列) * operationCanceled * serviceDisabled * serverError(エラー) * systemError(エラー) ネットワークサービスでエラーが発生した場合にスローされます。 {#NAPIiOS-data-async_O_A_A_S_O__NowDataErroriOS-ul-enum} |
[表 : 5. 返される内容]

{#NAPIiOS-data-async_O_A_A_S_O__table_kck_kyp_5pb}  
次のコード例は、このメソッドを呼び出す方法を示しています。

    do {
        let dataResponse = try await apiService.data(for: endpoint, queryItems: queryItems, httpHeaders: httpHeaders, body: body)
        // Data request successful
    } catch {
        // Data request failed, NowDataError thrown
    }

## NowAPIService - data(for endpoint: NowAPIEndpoint, queryItems: \[String: String\]? = nil, httpHeaders: \[String: String\]? = nil, body: Data? = nil) {#ariaid-title4}

指定された ServiceNow REST API からのデータを要求します。
注:  
このメソッドは廃止されました。代わりに、メソッドの async/await 実装を使用する必要があります。
{#NAPIiOS-data_O_A_A_S__table_sfb_5tp_5pb__entry__3}

| 名前 | タイプ | Description (説明) |
|-|-|-|
| エンドポイント向け | [NowAPIEndpoint](https://servicenow-prod.fluidtopics.net/XMcFWgzaOV~4_5IptIS0Ow#NowAPIEndpointiOSProtocol "NowAPIEndpoint プロトコルは、公開されている ServiceNow REST API にアクセスするためのインターフェイスを提供します。") | HTTP メソッド、エンドポイントへの相対パス、パスパラメーター、認証が必要かどうかなど、アクセスする ServiceNow REST API エンドポイントを含むオブジェクト。 |
| クエリアイテム | アレイ | オプション。エンドポイントのキー/値ペアとしてのクエリパラメーター。 デフォルト:nil |
| httpヘッダー | アレイ | オプション。エンドポイントで必要な HTTP ヘッダーをキーと値のペアとして要求します。 デフォルト:nil |
| 本文 | Data (データ) | オプション。要求本文のパラメーター。 デフォルト:nil |
[表 : 6. パラメーター]

{#NAPIiOS-data_O_A_A_S__table_sfb_5tp_5pb} {#NAPIiOS-data_O_A_A_S__table_tfb_5tp_5pb__entry__2}

| タイプ | Description (説明) |
|-|-|
| AnyPublisher\<DataResponse、NowDataError\> | 成功:REST API によって返されたデータ。 失敗:NowDataError * `accessToken(アクセストークンプロバイダーエラー)` * AccessTokenProviderError:アクセストークンプロバイダーのエラーコードまたはメッセージ。 * アクセストークン取得に失敗しました * userSessionError(_エラー:エラー) アクセストークンにエラーがある場合にスローされます。 * `attachmentValidation` 添付ファイルが検証に失敗したときにスローされます。 * `badResponse(statusCode: HTTPStatusCode)` * HTTPStatusCode:インスタンスから受信したステータスコード。 要求が予期しない応答を返した場合にスローされます * `cannotDecodeModel(デコードエラー)` * DecodingError:デコードエラーが検出されました。 Codable モデルを JSON からデコードできない場合にスローされます。 * `cannotDecodeProperty(タイプ:任意、差出人:文字列)` * type:文字列からデコードするラップされた型。 * from:指定されたタイプにデコードする文字列。 文字列でラップされた値を JSON からデコードできない場合にスローされます。 * `cannotEncodeModel(エンコーディングエラー)` * EncodingError:エンコードエラーが検出されました。 Codable モデルを JSON にエンコードできない場合にスローされます。 * `cannotParseResponse` インスタンスからの応答を予期される形式に解析できない場合にスローされます。 * `無効な URL` URL を形成できない場合にスローされます。たとえば、文字列に URL で無効な文字が含まれているか、空の文字列である場合などです。 * `missingAttachmentMetadata` 添付ファイルのメタデータヘッダーがない場合にスローされます。 * `missingServiceConfiguration` 予期されるサービス構成がない場合にスローされます。 * `missingSysID` 予期されるsys_idパラメーターがない場合にスローされます。 * `network(NetworkServiceError)` * genericError(文字列) * operationCanceled * serviceDisabled * serverError(エラー) * systemError(エラー) ネットワークサービスでエラーが発生した場合にスローされます。 {#NAPIiOS-data_O_A_A_S__NowDataErroriOS-ul-enum} |
[表 : 7. 返される内容]

{#NAPIiOS-data_O_A_A_S__table_tfb_5tp_5pb}  
次のコード例は、この関数を呼び出す方法を示しています。

    struct Endpoint: NowAPIEndpoint {
        let httpMethod: HTTPMethod
        let relativePath: String
        let requiresAuthentication: Bool
    }

    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = "/api/now/account"
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)

    // Using Combine
    apiService.data(for: Endpoint(httpMethod: httpMethod, relativePath: endpointPath, requiresAuthentication: requiresAuthentication), queryItems: queryItems, httpHeaders: httpHeaders, body: body.data(using: .utf8))
      .receive(on: DispatchQueue.main)
      .sink { [weak self] (comp) in
        if case let .failure(error) = comp {
          // Data request failed, return NowDataError
        }
      } receiveValue: { [weak self] (response) in
        // Data request successful
        self?.publish(data: response.data)
      }
      .store(in: &self.subscriptions)
    }


