今からでも間に合う

技術を学ぶのは今からでも遅くない

python入門~azure devops rest apiを使う~

azure devopsの環境を作ったので、rest apiを使ってアクセスしてみようと思います。

事前準備

Personal access tokens(PAT)の発行

こちらの記事でazure devopsの環境構築とPATの発行までを紹介していますので参照ください。

環境

  • VSCode
  • python 3.11.0

使用するライブラリ

  • azure-devops

パッケージのインストール方法についてはこちら

rest apiを使ってazureにアクセスする

サンプルコード

ライブラリの入手元のgithubに、サンプルコードが提供されているのでまずはつながるか確認してみました。

from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
import pprint
  
# Fill in with your personal access token and org URL
personal_access_token = 'YOURPAT'
organization_url = 'https://dev.azure.com/YOURORG'
  
# Create a connection to the org
credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)
  
# Get a client (the "core" client provides access to projects, teams, etc)
core_client = connection.clients.get_core_client()
  
# Get the first page of projects
get_projects_response = core_client.get_projects()
index = 0
while get_projects_response is not None:
    for project in get_projects_response.value:
        pprint.pprint("[" + str(index) + "] " + project.name)
        index += 1
    if get_projects_response.continuation_token is not None and get_projects_response.continuation_token != "":
        # Get the next page of projects
        get_projects_response = core_client.get_projects(continuation_token=get_projects_response.continuation_token)
    else:
        # All projects have been retrieved
        get_projects_response = None

引用元

実行結果、無事プロジェクト名が取得できました。

サンプルコードの罠

ですが、実は上記サンプルコードには多少罠があって多少悩まされました。
それは、rest apiのリファレンスにある処理でいくつか使えないものがあるです。

コードの中まで見に行って、問題個所特定。
問題だったのは14行目のここ。
core_client = connection.clients.get_core_client()

中で、

  • release用クライアント
  • v6.0用クライアント
  • v5.1用クライアント

の3つのインスタンスを持っていて、利用者側が使い分けなくてはいけなかった。。。

なので、v6.0のAPIを使いたい場合は次のように書く必要があります。

core_client = connection.clients_v6_0.get_core_client()

これでv6.0用のAPIが使えるようになりました。

おしまい

azure上の情報にrest apiでアクセス→取得したデータを使ってデータ解析・統計分析等につなげていければといろいろ検討中です。

python入門Top

プライバシーポリシー


d払いポイントGETモール