NowAPIService 클래스 - iOS

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 12분
  • NowAPIService 클래스는 지정된 ServiceNow REST API에 대한 요청을 수행할 수 있는 기능을 제공합니다.

    표 1. 속성
    이름 유형 설명
    구성 NowService구성 프로토콜과 연결할 서비스 구성입니다.

    NowAPIService - data(엔드포인트용: NowAPIEndpoint, queryItems: [문자열: 문자열], httpHeaders: [문자열: 문자열], 본문: 데이터, 완성: @escaping(결과<DataResponse, NowDataError>)

    지정된 ServiceNow REST API에서 데이터를 요청한 다음 완성 핸들러를 실행합니다.

    표 2. 매개변수
    이름 유형 설명
    엔드포인트용 NowAPIEndpoint HTTP 메서드, 엔드포인트의 ServiceNow 상대 경로, 경로 매개변수 및 인증 필요 여부를 포함하여 액세스할 REST API 엔드포인트를 포함하는 객체입니다.
    queryItems 배열 옵션입니다. 엔드포인트에 대한 쿼리 매개변수를 키/값 쌍으로 사용합니다.

    기본값: nil

    http헤더 배열 옵션입니다. 엔드포인트에 필요한 HTTP 헤더를 키/값 쌍으로 요청합니다.

    기본값: nil

    본문 문자열 옵션입니다. 요청 본문 매개변수입니다.

    기본값: nil

    완료 @escaping(결과<DataResponse, NowDataError>) REST API 호출이 완료된 후 실행할 완성 핸들러입니다.
    완성 핸들러에 대한 반환 값:
    • 성공: REST API 호출에서 반환된 데이터를 포함하는 DataResponse입니다.
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 제공자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ error: Error)

        접근 토큰에 오류가 있을 때 발생합니다.

      • 첨부 확인

        첨부 파일이 확인에 실패할 때 발생합니다.

      • badResponse(statusCode: HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청에서 예기치 않은 응답을 반환할 때 발생

      • cannotDecodeModel(DecodingError)
        • DecodingError: 디코딩 오류가 탐지되었습니다.

        코드화 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 유형으로 디코딩할 문자열입니다.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel(EncodingError)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코드 가능한 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParse응답

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에서 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 누락되었을 때 발생

      • missingServiceConfiguration

        예상 서비스 구성이 누락될 때 발생합니다.

      • MissingSysID

        예상 sys_id 매개변수가 누락되었을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • operationCanceled
        • serviceDisabled
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생할 때 발생합니다.

    표 3. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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: [String: String], httpHeaders: [String: String], body: Data) 비동기 throw

    지정된 ServiceNow REST API에서 데이터를 요청합니다.

    표 4. 매개변수
    이름 유형 설명
    엔드포인트용 NowAPIEndpoint HTTP 메서드, 엔드포인트의 상대 경로, 경로 매개변수 및 인증 필요 여부를 포함하여 REST API 엔드포인트를 포함하는 ServiceNow 객체입니다.
    queryItems 배열 옵션입니다. 엔드포인트에 대한 쿼리 매개변수 를 키/값 쌍으로 사용합니다.

    기본값: nil

    http헤더 배열 옵션입니다. 엔드포인트에 필요한 HTTP 헤더를 키/값 쌍으로 요청합니다.

    기본값: nil

    본문 문자열 옵션입니다. 요청 body parameters.

    기본값: nil

    표 5. 반환
    유형 설명
    데이터 응답 메서드가 성공하면 반환됩니다. REST API 호출의 데이터입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 제공자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ error: Error)

      접근 토큰에 오류가 있을 때 발생합니다.

    • 첨부 확인

      첨부 파일이 확인에 실패할 때 발생합니다.

    • badResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청에서 예기치 않은 응답을 반환할 때 발생

    • cannotDecodeModel(DecodingError)
      • DecodingError: 디코딩 오류가 탐지되었습니다.

      코드화 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 유형으로 디코딩할 문자열입니다.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel(EncodingError)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코드 가능한 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParse응답

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에서 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 누락되었을 때 발생

    • missingServiceConfiguration

      예상 서비스 구성이 누락될 때 발생합니다.

    • MissingSysID

      예상 sys_id 매개변수가 누락되었을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • operationCanceled
      • serviceDisabled
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생할 때 발생합니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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(엔드포인트: NowAPIEndpoint, queryItems: [String: String]? = nil, httpHeaders: [String: String]? = nil, body: Data? = nil)

    지정된 ServiceNow REST API에서 데이터를 요청합니다.

    주:
    이 방법은 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 6. 매개변수
    이름 유형 설명
    엔드포인트용 NowAPIEndpoint HTTP 메서드, 엔드포인트의 ServiceNow 상대 경로, 경로 매개변수 및 인증 필요 여부를 포함하여 액세스할 REST API 엔드포인트를 포함하는 객체입니다.
    queryItems 배열 옵션입니다. 엔드포인트에 대한 쿼리 매개변수를 키/값 쌍으로 사용합니다.

    기본값: nil

    http헤더 배열 옵션입니다. 엔드포인트에 필요한 HTTP 헤더를 키/값 쌍으로 요청합니다.

    기본값: nil

    본문 데이터 옵션입니다. 요청 본문 매개변수입니다.

    기본값: nil

    표 7. 반환
    유형 설명
    AnyPublisher<DataResponse, NowDataError> 성공: REST API에서 반환된 데이터입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 제공자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ error: Error)

      접근 토큰에 오류가 있을 때 발생합니다.

    • 첨부 확인

      첨부 파일이 확인에 실패할 때 발생합니다.

    • badResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청에서 예기치 않은 응답을 반환할 때 발생

    • cannotDecodeModel(DecodingError)
      • DecodingError: 디코딩 오류가 탐지되었습니다.

      코드화 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 유형으로 디코딩할 문자열입니다.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel(EncodingError)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코드 가능한 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParse응답

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에서 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 누락되었을 때 발생

    • missingServiceConfiguration

      예상 서비스 구성이 누락될 때 발생합니다.

    • MissingSysID

      예상 sys_id 매개변수가 누락되었을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • operationCanceled
      • serviceDisabled
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생할 때 발생합니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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)
    }