「AurJson」の版間の差分
表示
削除された内容 追加された内容
同期 |
Kusanaginoturugi (トーク | 投稿記録) 直接転送に変更 タグ: 転送先変更 |
||
| (3人の利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
#REDIRECT [[Aurweb RPC インターフェース]] |
|||
[[Category:パッケージ開発]] |
|||
[[en:AurJson]] |
|||
{{Related articles start}} |
|||
{{Related|公式リポジトリウェブインターフェイス}} |
|||
{{Related articles end}} |
|||
[https://aur.archlinux.org/rpc.php AurJson] インターフェイスは [[AUR]] の軽量リモートインターフェイスです。http の GET クエリでリクエストすることで、[http://www.json.org/ json] データとしてレスポンスを得ることができます。 |
|||
{{Note|この記事では2016年2月15日にリリースされた AUR v4.2.0 の RPC インターフェイス API バージョン5について説明しています。}} |
|||
== API の使用方法 == |
|||
=== クエリタイプ === |
|||
以下の2つのクエリタイプが存在します: |
|||
* search |
|||
* info |
|||
==== search ==== |
|||
以下の形式のリクエストを実行することでパッケージを検索できます: |
|||
/rpc/?v=5&type=search&by=''field''&arg=''keywords'' |
|||
{{ic|''keywords''}} は検索単語に {{ic|''field''}} は以下の値のどれかに置き換えてください: |
|||
* {{ic|name}} (パッケージ名だけで検索) |
|||
* {{ic|name-desc}} (パッケージ名と説明の両方で検索) |
|||
* {{ic|maintainer}} (パッケージメンテナで検索) |
|||
{{ic|by}} パラメータは省略することができ、その場合は {{ic|name-desc}} がデフォルトです。 |
|||
返り値タイプは {{ic|search}} または {{ic|error}} になります。 |
|||
検索単語を空にしてメンテナ検索した場合、メンテナが存在しないパッケージのリストが返ってきます。 |
|||
例: |
|||
{{ic|foobar}} で検索: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar</nowiki> |
|||
{{ic|john}} によってメンテナンスされているパッケージを検索: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&by=maintainer&arg=john</nowiki> |
|||
コールバックを指定して検索: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103</nowiki> |
|||
==== info ==== |
|||
以下の形式のリクエストを実行することでパッケージの情報を取得できます: |
|||
/rpc/?v=5&type=info&arg[]=''pkg1''&arg[]=''pkg2''&… |
|||
{{ic|''pkg1''}} や {{ic|''pkg2''}} は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。 |
|||
返り値タイプは {{ic|multiinfo}} または {{ic|error}} になります。 |
|||
例: |
|||
{{ic|foobar}} パッケージの情報を取得: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar</nowiki> |
|||
{{ic|foobar}} と {{ic|bar}} パッケージの情報を取得: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foo&arg[]=bar</nowiki> |
|||
=== 返り値タイプ === |
|||
返り値は3つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。 |
|||
返り値のペイロードは以下の形式になっています: |
|||
{"version":5,"type":''ReturnType'',"resultcount":0,"results":''ReturnData''} |
|||
{{ic|''ReturnType''}} は文字列で、以下のうちのどれかになります: |
|||
* {{ic|search}} |
|||
* {{ic|multiinfo}} |
|||
* {{ic|error}} |
|||
{{ic|''ReturnType''}} が {{ic|search}} と {{ic|multiinfo}} の場合は {{ic|''ReturnData''}} はオブジェクト配列となり、{{ic|''ReturnType''}} が {{ic|error}} の場合は空の配列になります。 |
|||
==== error ==== |
|||
error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは {{ic|search}} と {{ic|info}} クエリタイプで返ってくることがあります。 |
|||
{{ic|''ReturnType''}} {{ic|error}} の例: |
|||
{"version":5,"type":"error","resultcount":0,"results":[],"error":"Incorrect by field specified."} |
|||
==== search ==== |
|||
search タイプは search リクエストから返される結果です。検索の結果は、info リクエストと同じです。info セクションを見てください。 |
|||
{{ic|''ReturnType''}} {{ic|search}} の例: |
|||
{"version":5,"type":"search","resultcount":2,"results":[{"ID":206807,"Name":"cower-git", ...}]} |
|||
==== info ==== |
|||
info タイプは info リクエストから返される結果です。 |
|||
{{ic|''ReturnType''}} {{ic|multiinfo}} の例: |
|||
<nowiki> |
|||
{ |
|||
"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":[] |
|||
}] |
|||
} |
|||
</nowiki> |
|||
=== jsonp === |
|||
JavaScript ページを作っていて、JSON のコールバックメカニズムが必要な場合、callback 変数を追加で指定することで可能です。コールバックは基本的に JavaScript のライブラリで処理しますが、以下が例です。 |
|||
クエリの例: |
|||
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&arg=foobar&callback=jsonp1192244621103</nowiki> |
|||
結果の例: |
|||
/**/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 関数 {{Ic|jsonp1192244621103}} が自動的に呼び出されます。 |
|||
== リファレンスクライアント == |
|||
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples |
|||
== 関連するコード == |
|||
* {{AUR|python3-aur}} パッケージには AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。詳しくは [http://xyne.archlinux.ca/projects/python3-aur/ python3-aur] を参照。 |
|||
* {{Pkg|jshon}} はコマンドラインから JSON をパース・読み込み・作成します。詳しくは [http://kmkeen.com/jshon/ jshon] を参照。 |
|||