Azure DevOps扩展插件-SDK简单介绍

最近在编写Azure DevOps扩展插件,查看了官方提供的SDK,在这里简单记录一下。

 

作用

客户端 SDK 使 Web 扩展能够与主机框架进行通信。它可用于:

  • 通知主机扩展已加载或有错误
  • 获取有关当前页面的基本上下文信息(当前用户、主机和扩展信息)
  • 获取主题信息
  • 获取授权令牌以在 REST 回调中使用 Azure DevOps
  • 获取主机框架提供的远程服务

使用方法

导入SDK

import * as SDK from "azure-devops-extension-sdk"

初始化SDK

SDK.init();

SDK提供的方法

接口

  • IExtensionContext 当前扩展的标识符
  • IExtensionInitOptions 扩展初始化选项——传递给 DevOps.init()
  • IHostContext 当前 DevOps 主机(组织)的信息
  • IUserContext 当前用户信息

枚举

  • HostType DevOps 主机级别

方法

  • init(IExtensionInitOptions) 启动与主机窗口的握手。
  • ready() 注册一个在初始设置/握手完成后调用的回调。如果初始设置已经完成,则在当前调用堆栈的末尾调用回调。
  • notifyLoadSucceeded() 通知主机扩展成功加载(停止显示加载指示器)
  • notifyLoadFailed(Error | string) 通知主机扩展加载失败
  • getConfiguration() 从父框架获取初始握手中传递的配置数据
  • getContributionId() 获取有关首次导致此扩展加载的Contribution的信息
  • getUser() 获取有关当前用户的信息
  • getHost() 获取有关页面所针对的主机(即 Azure DevOps 组织)的信息
  • getExtensionContext() 获取有关拥有所托管内容的扩展程序的上下文
  • getService<T>(string) 获取具有给定贡献 ID 的贡献。返回的贡献具有在该贡献中获取注册对象的方法。
  • unregister(string) 删除此扩展向主机框架公开的对象
  • getAccessToken() 获取允许调用其他 DevOps 服务的访问令牌
  • getAppToken() 获取可用于识别当前用户的令牌
  • resize(number, number) 请求父窗口根据当前扩展大小调整此扩展的容器大小
  • applyTheme([key: string]: string) 将主题变量应用于当前文档

其中getService方法具有强扩展性,可以进一步调用azure-devops-extension-api中的服务。下面例子是获取当前页面所关联的项目:

const projectService = await SDK.getService<IProjectPageService>(CommonServiceIds.ProjectPageService);
const project = await projectService.getProject();

通过往getService()方法中传入CommonServiceIds来获取相应的服务,以下枚举出了所有CommonServiceIds。

/**
 * Contribution ids of core DevOps services which can be obtained from DevOps.getService
 */
export declare const enum CommonServiceIds {
    /**
     * Service for interacting with the extension data service
     * 用于与扩展数据服务交互的服务
     */
    ExtensionDataService = "ms.vss-features.extension-data-service",
    /**
     * Service for showing global message banners at the top of the page
     * 在页面顶部显示全局消息横幅的服务 
     */
    GlobalMessagesService = "ms.vss-tfs-web.tfs-global-messages-service",
    /**
     * Service for interacting with the host window's navigation (URLs, new windows, etc.)
     * 与主机窗口导航(URL、新窗口等)交互的服务
     */
    HostNavigationService = "ms.vss-features.host-navigation-service",
    /**
     * Service for interacting with the layout of the page: managing full-screen mode,
     * opening dialogs and panels
     * 与页面布局交互的服务:管理全屏模式,打开对话框和面板
     */
    HostPageLayoutService = "ms.vss-features.host-page-layout-service",
    /**
     * Service for getting URLs/locations from the host context
     * 从主机上下文获取URL/位置的服务
     */
    LocationService = "ms.vss-features.location-service",
    /**
     * Exposes project-related information from the current page
     * 显示当前页面中与项目相关的信息
     */
    ProjectPageService = "ms.vss-tfs-web.tfs-page-data-service"
}

 

参考资料

  • npm官网介绍:https://www.npmjs.com/package/azure-devops-extension-sdk
  • 完整API官方介绍:https://docs.microsoft.com/en-us/javascript/api/azure-devops-extension-sdk/
  • 官方使用示例:https://github.com/Microsoft/azure-devops-extension-sample

 

posted @ 2022-06-15 17:21  酌三巡  阅读(239)  评论(0编辑  收藏  举报