스크립팅된 REST API - ServiceNow Fluent

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기10분
  • Scripted REST API에는 Scripted REST 서비스 [sys_ws_definition]에 대한 엔드포인트, 쿼리 매개변수 및 헤더를 정의하는 객체가 포함되어 있습니다.

    RestApi 객체

    스크립팅된 REST API [sys_ws_definition]를 만들어 웹 서비스 엔드포인트를 정의합니다.

    표 1. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 다음 형식으로 제공되는 메타데이터 개체의 고유 ID입니다. 여기서 <value> 는 문자열 또는 숫자입니다.
    $id: Now.ID[<value>]

    애플리케이션을 빌드할 때 이 ID는 고유한 sys_ID로 해시됩니다.

    이름 문자열 필수 API 설명서에 사용되는 API의 이름입니다.
    service_id 문자열 필수 URI 경로에서 이 API를 구분하는 데 사용되는 API 식별자입니다. API 네임스페이스 내에서 고유해야 합니다.
    active 부울 API가 요청을 처리할 수 있는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: API가 요청을 처리할 수 있습니다.
    • false: API가 요청을 처리할 수 없습니다.

    기본값: true

    short_description 문자열 API 설명서에 사용되는 API에 대한 간략한 설명입니다.
    소모 문자열 API의 리소스에서 사용할 수 있는 미디어 유형 목록입니다.

    기본값: application/json,application/xml,text/xml

    doc_link 문자열 API에 대한 정적 문서에 연결되는 URL입니다.
    enforce_acl 배열 자원에 접근할 때 적용할 ACL 객체 또는 ACL sys_ids의 변수 식별자 목록입니다[sys_security_acl]. 자세한 내용은 접근 제어 목록 API - ServiceNow Fluent 문서를 참조하십시오.

    ACL을 적용하지 않으려면 이 속성을 빈 배열([])로 설정하십시오.

    enforce_acl: ['sys_id', acl_variable_identifier]

    기본값: 스크립팅된 REST 외부 기본값

    생성 문자열 API의 리소스가 생성할 수 있는 미디어 유형 목록입니다.

    기본값: application/json,application/xml,text/xml

    경로 배열 API의 자원 [sys_ws_operation]입니다. 자세한 내용은 경로 객체 문서를 참조하십시오.
    정책 문자열 다운로드 또는 설치 시 애플리케이션 파일의 보호 방법에 대한 정책입니다.
    유효한 값은 다음과 같습니다.
    • read: 파일은 볼 수만 있습니다.
    • 보호됨: 암호 권한이 있는 사용자가 파일을 편집할 수 있습니다.
    버전 배열 API의 버전 목록[sys_ws_version]입니다. 자세한 내용은 버전 객체 문서를 참조하십시오.

    버전을 지정하면 API의 다양한 버전과 해당 상태(예: 활성 상태, 기본 버전 또는 사용 중단 여부)를 관리할 수 있습니다.

    import { RestApi } from '@servicenow/sdk/core'
    import { process } from '../server/handler.js'
    
    RestApi({
        $id: Now.ID['rest1'],
        name: 'customAPI',
        service_id: 'custom_api',
        consumes: 'application/json',
        routes: [
            {
                $id: Now.ID['route1'],
                path: '/home/{id}',
                script: process,
                parameters: [{ $id: Now.ID['param1'],  name: 'n_param' }],
                headers: [{ $id: Now.ID['header1'],  name: 'n_token' }],
                enforce_acl: [acl],
                version: 1,
            },
        ],
        enforce_acl: [acl],
        versions: [
            {
                $id: Now.ID['v1'],
                version: 1,
            },
        ],
    })
    
    참조된 ACL은 ACL 객체를 사용하여 정의됩니다.
    import { Acl } from "@servicenow/sdk/core";
    
    const acl = Acl({
        name: 'My random ACL',
        type: 'rest_endpoint',
        script: `answer = (Math.random() > 0.5)`,
        active: true,
        admin_overrides: false,
        operations: ['execute'],
    })

    경로 객체

    HTTP 메서드, 처리 스크립트를 정의하고 상위 서비스의 설정을 재정의하는 스크립팅된 REST 자원 [sys_ws_operation]을 만듭니다.

    RestApi 개체 내에서 routes 개체를 사용합니다.

    표 2. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 다음 형식으로 제공되는 메타데이터 개체의 고유 ID입니다. 여기서 <value> 는 문자열 또는 숫자입니다.
    $id: Now.ID[<value>]

    애플리케이션을 빌드할 때 이 ID는 고유한 sys_ID로 해시됩니다.

    이름 문자열 API 설명서에 사용되는 API 자원의 이름입니다.

    기본값: 경로 속성의 값

    스크립트 스크립트 필수 스크립트 태그 앞에 오는 함수 또는 인라인 스크립트입니다. 사용자 지정 스크립트는 작업이 요청을 구문 분석하고 응답하는 방법을 정의합니다.

    함수의 경우 JavaScript 모듈에서 내보내고 .now.ts 파일로 가져온 함수, 함수 표현식 또는 기본 함수의 이름을 사용합니다. JavaScript 모듈에 대한 자세한 내용은 을 참조하십시오 JavaScript 모듈 및 타사 라이브러리.

    인라인 스크립트는 다음 형식으로 script 태그를 사용합니다.
    script: script`gs.info('info')`,
    active 부울 자원이 사용되는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 리소스가 사용됩니다.
    • false: 리소스가 사용되지 않습니다.

    기본값: true

    path 문자열 기본 API 경로에 상대적인 자원의 경로입니다. 상대 URI에는 '/abc/{id}'와 같은 경로 매개 변수가 포함될 수 있습니다.

    기본값:/

    short_description 문자열 API 설명서에 사용되는 자원에 대한 간략한 설명입니다.
    소모 문자열 리소스에서 사용할 수 있는 미디어 유형의 목록입니다.

    이 속성은 PUT, PATCH 또는 POST 메서드로 재정의할 수 있습니다.

    기본값: RestApi 개체의 consume 속성 값

    enforce_acl 배열 자원에 접근할 때 적용할 ACL 객체 또는 ACL sys_ids의 변수 식별자 목록입니다[sys_security_acl]. 자세한 내용은 접근 제어 목록 API - ServiceNow Fluent 문서를 참조하십시오.

    ACL을 적용하지 않으려면 이 속성을 빈 배열([])로 설정하십시오.

    enforce_acl: ['sys_id', acl_variable_identifier]

    기본값: 스크립팅된 REST 외부 기본값

    생성 문자열 리소스가 생성할 수 있는 미디어 유형의 목록입니다.

    기본값: RestApi 개체의 produce 속성 값

    request_example 문자열 자원에 대한 유효한 샘플 요청 본문 페이로드로, API 설명서에 사용됩니다.
    방법 문자열 자원이 구현하는 HTTP 메서드입니다.

    유효한 값: GET, POST, PUT, PATCH, DELETE

    기본값: GET

    권한 부여 부울 사용자가 자원에 액세스하기 위해 인증되어야 하는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 자원에 액세스하려면 사용자를 인증해야 합니다.
    • false: 리소스에 액세스하는 데 인증이 필요하지 않습니다.

    기본값: true

    인증 부울 자원에 접근할 때 ACL이 적용되는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 자원에 접근할 때 ACL이 적용됩니다.
    • false: 자원에 접근할 때 ACL이 적용되지 않습니다.

    기본값: true

    내부 역할 부울 경로에 snc_internal 역할이 필요한지 여부를 나타내는 플래그입니다.

    이 속성은 Explicit Roles 플러그인(com.glide.explicit_roles)이 활성화된 경우에만 지원됩니다.

    유효한 값은 다음과 같습니다.
    • true: 경로에 snc_internal 역할이 필요합니다.
    • false: 경로에 snc_internal 역할이 필요하지 않습니다.

    기본값: true

    정책 문자열 다운로드 또는 설치 시 애플리케이션 파일의 보호 방법에 대한 정책입니다.
    유효한 값은 다음과 같습니다.
    • read: 파일은 볼 수만 있습니다.
    • 보호됨: 암호 권한이 있는 사용자가 파일을 편집할 수 있습니다.
    버전 번호 API의 버전입니다.

    버전 속성이 RestApi 개체에서 사용되는 경우 이 속성이 필요합니다.

    이 속성으로 지정된 버전은 /api/management/v1/table/{tableName}과 같은 버전으로 URI를 자동으로 생성하는 데 사용됩니다. 버전 번호는 URI가 액세스하는 엔드포인트 버전을 식별합니다. 버전 번호를 지정하면 기존 통합에 영향을 주지 않고 변경 내용을 테스트하고 배포할 수 있습니다.

    routes: [
       {
          $id: Now.ID['route1'],
          path: '/home/{id}',
          script: process,
          parameters: [{ $id: Now.ID['param1'],  name: 'n_param' }],
          headers: [{ $id: Now.ID['header1'],  name: 'n_token' }],
          enforce_acl: [acl],
          version: 1,
       },
    ],

    매개 변수 및 헤더 개체

    스크립팅된 REST API에서 경로에 대한 쿼리 매개변수 [sys_ws_query_parameter] 및 헤더 [sys_ws_header]를 생성합니다. 쿼리 매개 변수는 요청 사용자가 요청 URI에 전달할 수 있는 값을 제어합니다. 헤더는 API가 수락하고 응답할 수 있는 항목을 지정합니다.

    routes 객체 내에서 parametersheaders 객체를 사용합니다.

    표 3. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 다음 형식으로 제공되는 메타데이터 개체의 고유 ID입니다. 여기서 <value> 는 문자열 또는 숫자입니다.
    $id: Now.ID[<value>]

    애플리케이션을 빌드할 때 이 ID는 고유한 sys_ID로 해시됩니다.

    이름 문자열 필수 API 설명서에 사용되는 매개변수 또는 헤더의 이름입니다.
    필수 부울 매개변수 또는 헤더가 필요한지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 매개 변수 또는 헤더가 필요합니다.
    • false: 매개 변수 또는 헤더가 필요하지 않습니다.

    기본값: false

    example_value 문자열 API 설명서에 사용되는 매개변수 또는 헤더의 유효한 값 예입니다.
    short_description 문자열 API 설명서에 사용되는 매개변수 또는 헤더에 대한 간략한 설명입니다.
    parameters: [{ $id: Now.ID['param1'],  name: 'n_param' }],
    headers: [{ $id: Now.ID['header1'],  name: 'n_token' }],

    버전 객체

    웹 서비스 엔드포인트를 정의하기 위해 스크립트된 REST API [sys_ws_version]의 버전을 만듭니다.

    RestApi 개체 내에서 versions 개체를 사용합니다.

    표 4. 속성
    이름 유형 설명
    $id 문자열 또는 숫자 필수 다음 형식으로 제공되는 메타데이터 개체의 고유 ID입니다. 여기서 <value> 는 문자열 또는 숫자입니다.
    $id: Now.ID[<value>]

    애플리케이션을 빌드할 때 이 ID는 고유한 sys_ID로 해시됩니다.

    버전 번호 필수 REST API의 버전입니다.
    active 부울 REST API의 버전이 요청을 처리할 수 있는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: API의 버전이 요청을 처리할 수 있습니다.
    • false: API 버전에서 요청을 처리할 수 없습니다.

    기본값: true

    사용하지 않음 부울 REST API의 버전이 더 이상 사용되지 않는지 여부를 나타내는 플래그입니다. 사용되지 않는 버전에 속하는 자원은 요청을 서비스할 수 있지만 문서에는 사용되지 않는 것으로 표시됩니다.
    유효한 값은 다음과 같습니다.
    • true: API의 버전이 더 이상 사용되지 않는 것으로 식별됩니다.
    • false: API 버전이 더 이상 사용되지 않는 것으로 식별되지 않습니다.

    기본값: false

    short_description 문자열 API 설명서에 나타나는 REST API의 버전에 대한 간략한 설명입니다.
    is_default 부울 REST API의 버전이 기본 버전인지 여부를 나타내는 플래그입니다. 클라이언트는 버전이 지정되거나 버전이 지정되지 않은 URI 경로를 사용하여 기본 버전에 액세스할 수 있습니다.
    유효한 값은 다음과 같습니다.
    • true: API의 버전이 기본 버전입니다.
    • false: API 버전이 기본 버전이 아닙니다.

    기본값: false

    versions: [
     {
       $id: Now.ID['v1'],
       version: 1,
     },
    ],