繁体   English   中英

使用 azure devops 的 rest api

[英]Using rest api of azure devops

我想使用 Java 从 Azure Devops 的其余 api 获取数据。但不确定如何建立连接。可能个人访问令牌会有所帮助,但如何使用代码中的令牌来建立代码和 azure devops 之间的连接? 任何人的例子都会很有帮助。

一个代码示例将非常有帮助

如果我对您的理解正确,您正在尝试调用 azure API,而这些 API 需要授权令牌?

例如这个 azure API 将数据发送到 Azure 队列: https ://docs.microsoft.com/en-us/rest/api/servicebus/send-message-to-queue

它需要一些有效载荷和请求头中的授权


如果我的理解是正确的,那么您需要使用任何 REST客户端HTTP 客户端调用 REST API ,并且您需要在请求标头中传递授权令牌

使用下面的标头在 java 中调用 Rest API 是一个示例:

MultiValueMap<String, String> map= new LinkedMultiValueMap<>();
map.add("Authorization", "Bearer <Azure AD JWT token>"); // set your token here

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); //someother http headers you want to set

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);

RestTemplate restTemplate = new RestTemplate();
String azure_url = "https://azure_url"; // your azure devops REST URL

ResponseEntity<String> response = restTemplate.postForEntity(azure_url, request , String.class);

httpclient 的一个小例子:

static String ServiceUrl = "https://dev.azure.com/<your_org>/";
static String TeamProjectName = "your_team_project_name";
static String UrlEndGetWorkItemById = "/_apis/wit/workitems/";
static Integer WorkItemId = 1208;
static String PAT = "your_pat";

String AuthStr = ":" + PAT;
Base64 base64 = new Base64();
        
String encodedPAT = new String(base64.encode(AuthStr.getBytes()));
        
URL url = new URL(ServiceUrl + TeamProjectName + UrlEndGetWorkItemById + WorkItemId.toString());
HttpURLConnection con = (HttpURLConnection) url.openConnection();
        
con.setRequestProperty("Authorization", "Basic " + encodedPAT);
con.setRequestMethod("GET");
        
int status = con.getResponseCode();

文件链接: ResApiMain.java

您可以将 java 客户端库用于 azure devops rest api。 这将承担编码您的个人访问令牌的重载,并且确实支持 OAuth 身份验证。

它已被积极开发并用于生产。

源代码 - https://github.com/hkarthik7/azure-devops-java-sdk

文档 - https://azure-devops-java-sdk-docs.readthedocs.io/en/latest/?badge=latest

一个简单的例子:

public class Main {
    public static void main(String[] args) {
        String organisation = "myOrganisationName";
        String personalAccessToken = "accessToken";
        String projectName = "myProject";

        // Connect Azure DevOps API with organisation name and personal access token.
        var webApi = new AzDClientApi(organisation, project, personalAccessToken);

        // call the respective API with created webApi client connection object;
        var core = webApi.getCoreApi();
        var wit = webApi.getWorkItemTrackingApi();

        try {
            // get the list of projects
            core.getProjects();

            // get a workitem
            wit.getWorkItem(15);

            // Get a work item and optionally expand the field
            wit.getWorkItem(15, WorkItemExpand.ALL);
            
        } catch (AzDException e1) {
            e1.printStackTrace();
        }
    }
}

该库支持大多数 API,您可以查看 github 存储库中的文档和示例文件夹,以了解如何充分利用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM