「AurJson」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://xyne.archlinux.ca/」を「https://xyne.archlinux.ca/」に置換) |
(同期) |
||
| 1行目: | 1行目: | ||
[[Category:パッケージ開発]] |
[[Category:パッケージ開発]] |
||
| + | [[Category:Arch プロジェクト]] |
||
[[en:AurJson]] |
[[en:AurJson]] |
||
| + | [[pt:AurJson]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|公式リポジトリウェブインターフェイス}} |
{{Related|公式リポジトリウェブインターフェイス}} |
||
2018年4月19日 (木) 00:13時点における版
関連記事
AurJson インターフェイスは AUR の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、json データとしてレスポンスを得ることができます。
目次
API の使用方法
クエリタイプ
以下の2つのクエリタイプが存在します:
- search
- info
search
以下の形式のリクエストを実行することでパッケージを検索できます:
/rpc/?v=5&type=search&by=field&arg=keywords
keywords は検索単語に field は以下の値のどれかに置き換えてください:
name(パッケージ名だけで検索)name-desc(パッケージ名と説明の両方で検索)maintainer(パッケージメンテナで検索)
by パラメータは省略することができ、その場合は name-desc がデフォルトです。
返り値タイプは search または error になります。
検索単語を空にしてメンテナ検索した場合、メンテナが存在しないパッケージのリストが返ってきます。
例:
foobar で検索:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar
john によってメンテナンスされているパッケージを検索:
https://aur.archlinux.org/rpc/?v=5&type=search&by=maintainer&arg=john
コールバックを指定して検索:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103
info
以下の形式のリクエストを実行することでパッケージの情報を取得できます:
/rpc/?v=5&type=info&arg[]=pkg1&arg[]=pkg2&…
pkg1 や pkg2 は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。
返り値タイプは multiinfo または error になります。
例:
foobar パッケージの情報を取得:
https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar
foobar と bar パッケージの情報を取得:
https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foo&arg[]=bar
返り値タイプ
返り値は3つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。
返り値のペイロードは以下の形式になっています:
{"version":5,"type":ReturnType,"resultcount":0,"results":ReturnData}
ReturnType は文字列で、以下のうちのどれかになります:
searchmultiinfoerror
ReturnType が search と multiinfo の場合は ReturnData はオブジェクト配列となり、ReturnType が error の場合は空の配列になります。
error
error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは search と info クエリタイプで返ってくることがあります。
ReturnType error の例:
{"version":5,"type":"error","resultcount":0,"results":[],"error":"Incorrect by field specified."}
search
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。
ReturnType search の例:
{"version":5,"type":"search","resultcount":2,"results":[{"ID":206807,"Name":"cower-git", ...}]}
info
info タイプは info リクエストから返される結果です。
ReturnType multiinfo の例:
{
"version":5,
"type":"multiinfo",
"resultcount":1,
"results":[{
"ID":229417,
"Name":"cower",
"PackageBaseID":44921,
"PackageBase":"cower",
"Version":"14-2",
"Description":"A simple AUR agent with a pretentious name",
"URL":"http:\/\/github.com\/falconindy\/cower",
"NumVotes":590,
"Popularity":24.595536,
"OutOfDate":null,
"Maintainer":"falconindy",
"FirstSubmitted":1293676237,
"LastModified":1441804093,
"URLPath":"\/cgit\/aur.git\/snapshot\/cower.tar.gz",
"Depends":[
"curl",
"openssl",
"pacman",
"yajl"
],
"MakeDepends":[
"perl"
],
"License":[
"MIT"
],
"Keywords":[]
}]
}
jsonp
JavaScript ページを作っていて、JSON のコールバックメカニズムが必要な場合、callback 変数を追加で指定することで可能です。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。
クエリの例:
https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103
結果の例:
/**/jsonp1192244621103({"version":5,"type":"search","resultcount":1,"results":[{"ID":250608,"Name":"foobar2000","PackageBaseID":37068,"PackageBase":"foobar2000","Version":"1.3.9-1","Description":"An advanced freeware audio player (uses Wine).","URL":"http:\/\/www.foobar2000.org\/","NumVotes":39,"Popularity":0.425966,"OutOfDate":null,"Maintainer":"supermario","FirstSubmitted":1273255356,"LastModified":1448326415,"URLPath":"\/cgit\/aur.git\/snapshot\/foobar2000.tar.gz"}]})
引数に RPC コールの結果が設定されて JavaScript 関数 jsonp1192244621103 が自動的に呼び出されます。
リファレンスクライアント
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples
関連するコード
- python3-aurAUR パッケージには AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。詳しくは python3-aur を参照。
- jshon はコマンドラインから JSON をパース・読み込み・作成します。詳しくは jshon を参照。