LoginSignup
0
0

Azure DevOps Service REST APIでWikiの更新を試してみたメモ

Last updated at Posted at 2024-06-21

概要

公式ドキュメントは割としっかり書いてある。
ただ、実例があまり見つからなかったので備忘録として残しておく。

トークン取得

Azure DevOps REST API を使ってみようを参考にトークンを取得する。
記事では Fiddler を使っているが、導入していないのでBashでトークンを使える形にした。

echo -n "hoge:fugaToken" | base64

dGVzdDpwYXNzd29yZA==

APIからページのデータを取得。

Pages - Get Page By Idを参考にしてRESTAPIを作成する。

GET https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages/{id}?api-version=7.1-preview.1のパスがドキュメントから確認できる。

たとえば、/pullrequest/mermaidのパスに存在する、https://dev.azure.com/hogehoge/てすと/_wiki/wikis/ほげ/952/mermaid のページの情報を取得する場合を下記に示す。
日本語や/が混じるとエラーとなるため、URLエンコードを行う。

GET https://dev.azure.com/hogehoge/%E3%81%A6%E3%81%99%E3%81%A8/_apis/wiki/wikis/%E3%81%BB%E3%81%92/pages/952?api-version=7.1-preview.1
Authorization: Basic dGVzdDpwYXNzd29yZA==
Content-Type: application/json
echo -n "てすと" | perl -MURI::Escape -ne 'print uri_escape($_)'
echo -n "ほげ" | perl -MURI::Escape -ne 'print uri_escape($_)'

このAPIのレスポンスヘッダに記載されているETagのIDは、更新に使うため控えておく。

image.png

APIを通じてページの更新を行う。

Pages - Create Or Update

ブランチをazureブランチとしてwikiの管理をしているとする。
path=にURLエンコードしたパス(/の変換)を指定する。( echo -n "pullrequest/mermaid" | perl -MURI::Escape -ne 'print uri_escape($_)' )
If-Matchには先ほどGETした戻りのヘッダのETagを取得する。

PUT https://dev.azure.com/hogehoge/%E3%81%A6%E3%81%99%E3%81%A8/_apis/wiki/wikis/%E3%81%BB%E3%81%92/pages?path=pullrequest%2Fmermaid&versionDescriptor.version=azure&api-version=7.1-preview.1
Authorization: Basic dGVzdDpwYXNzd29yZA==
Content-Type: application/json
If-Match: "30d74d258442c7c65512eafab474568dd706c430"


{
  "content": "piyopiyo"
}

参考

Azure DevOps REST API を使ってみよう
AzureDevOpsPipelineからRESTAPIをたたく

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0