본문 바로가기
WIKI 기술 지식 베이스

Utility API 구성하기(Configuring Utility APIs)

원문 보기 위키 갱신

Utility API는 확장(extension)이므로, 선택적으로 구성 가능성(configurability)을 덧붙일 수 있고 다른 확장이 자신을 붙이는 입력(input)도 가질 수 있어요. 이 섹션에서는 그러한 utility API의 소비자로서 그것을 활용하는 방법을 설명해요.

출처: 문서

본문

Utility API는 확장(extension)이므로, 선택적으로 구성 가능성(configurability)을 덧붙일 수 있고 다른 확장이 자신을 붙이는 입력(input)도 가질 수 있어요. 이 섹션에서는 그러한 utility API의 소비자로서 그것을 활용하는 방법을 설명해요.

구성하기(Configuring)

Utility API 확장을 구성하려면 먼저 그 ID를 알아야 해요. 그 ID는 API ref ID로 구성돼요. 자세한 내용은 명명 패턴 문서를 확인하세요.

만들기(creating) 섹션의 예시 work API는 api:plugin.example.work라는 ID를 가질 거예요. 그것과 다른 모든 확장을 app-config의 app.extensions 섹션 아래에서 구성해요.

예: app-config.yaml 또는 app-config.production.yaml

app:
  extensions:
    - api:plugin.example.work:
        config:
          goSlow: false
    - # ... other extensions

extensions가 목록이라는 점(앞의 -에 주의)과, api:plugin.example.work 항목이 객체라서 config 키가 그 아래에 들여써져야 한다는 점을 기억하는 게 중요해요. 이 두 가지를 제대로 맞추지 않으면 애플리케이션이 올바르게 시작되지 않을 수 있어요.

확장 구성 스키마가 지원하는 매개변수를 알려줘요. 여기서는 goSlow 확장 구성 값을 재정의해 기본값을 대체해요.

입력에 확장 붙이기

다른 확장 유형과 마찬가지로, 그 attachment의 attachTo 섹션이 Utility API의 ID와 입력 이름을 가리키도록 선언해 Utility API에 입력 attachment를 추가해요.

입력을 지원하는 잘 작성된 확장에는 종종 그러한 attachment를 만드는 데 도움이 되는 확장 생성자 함수가 있어요. 그 함수들은 보통 attachTo 섹션을 대신 올바르게 설정해 줘서 직접 알아내지 않아도 돼요.

Utility API 구현 교체하기

다른 확장 유형과 마찬가지로, Utility API를 확장 오버라이드(extension overrides)를 사용해 여러분만의 커스텀 구현으로 교체할 수 있어요.

Utility API는 원래 그 API를 제공한 플러그인의 모듈로만 오버라이드할 수 있다는 점을 알아두세요. 다른 플러그인이나 다른 플러그인의 모듈로 API를 오버라이드하려고 하면 충돌 오류가 발생해요.

앱에서:

import { createFrontendModule } from '@backstage/frontend-plugin-api';

class CustomWorkImpl implements WorkApi {
  /* ... */
}

const workModule = createFrontendModule({
  pluginId: 'work',
  extensions: [
    ApiBlueprint.make({
      params: {
        factory: createApiFactory({
          api: workApiRef,
          factory: () => new CustomWorkImpl(),
        }),
      },
    }),
  ],
});

// Remember to pass the overrides to your createApp
export default createApp({
  features: [
    // ... other features
    workModule,
  ],
});

이 예시에서 오버라이딩 확장은 최소로 유지했지만, 다른 확장과 마찬가지로 deps, 구성 가능성, 입력도 가질 수 있어요. 그에 대한 자세한 내용은 만들기(Creating) 섹션을 확인하세요.

교체용 확장을 만들 때는, 일반적으로 해당하는 경우 그 확장 구성 스키마나 입력 형태를 모방하고 싶을 거예요. 그러면 앱에 끼워 넣기가 더 쉬워져요. 원래 확장과 같은 방식으로 확장성에 응답하기 때문이에요.

더 알아보기 (Learn more)