「AurJson」の版間の差分
表示
削除された内容 追加された内容
Kusanaginoturugi (トーク | 投稿記録) →リファレンスクライアント: == Limitations == を追加 |
Kusanaginoturugi (トーク | 投稿記録) リダイレクトに変更 タグ: 新規リダイレクト |
||
| 1行目: | 1行目: | ||
#REDIRECT [[Aurweb RPC インターフェイス]] |
|||
[[Category:パッケージ開発]] |
|||
[[Category:Arch プロジェクト]] |
|||
[[en:AurJson]] |
|||
[[pt: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}} の場合は空の配列になります。 |
|||
==== return data ==== |
|||
The type of {{ic|''ReturnData''}} is an array of dictionary objects for the {{ic|search}} and {{ic|multiinfo}} {{ic|''ReturnType''}}, and an empty array for {{ic|error}} {{ic|''ReturnType''}}. |
|||
For the {{ic|''ReturnType''}} {{ic|''search''}}, {{ic|''ReturnData''}} may contain the following fields: |
|||
* {{ic|ID}} |
|||
* {{ic|Name}} |
|||
* {{ic|PackageBaseID}} |
|||
* {{ic|PackageBase}} |
|||
* {{ic|Version}} |
|||
* {{ic|Description}} |
|||
* {{ic|URL}} |
|||
* {{ic|NumVotes}} |
|||
* {{ic|Popularity}} |
|||
* {{ic|OutOfDate}} |
|||
* {{ic|Maintainer}} |
|||
* {{ic|FirstSubmitted}} |
|||
* {{ic|LastModified}} |
|||
* {{ic|URLPath}} |
|||
For the {{ic|''ReturnType''}} {{ic|''info''}} and {{ic|''multiinfo''}}, {{ic|''ReturnData''}} may additionally contain the following fields: |
|||
* {{ic|Depends}} |
|||
* {{ic|MakeDepends}} |
|||
* {{ic|OptDepends}} |
|||
* {{ic|CheckDepends}} |
|||
* {{ic|Conflicts}} |
|||
* {{ic|Provides}} |
|||
* {{ic|Replaces}} |
|||
* {{ic|Groups}} |
|||
* {{ic|License}} |
|||
* {{ic|Keywords}} |
|||
Fields that a package does not contain will be omitted from the output. |
|||
==== 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}} が自動的に呼び出されます。 |
|||
== Limitations== |
|||
* HTTP GET requests are limited to URI of 8190 bytes maximum length. However, the official AUR instance running on a nginx server with HTTP/2 uses the [https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_field_size default URI maximum length] limit of 4443 bytes. Info requests with more than about 200 packages as an argument will need to be split. |
|||
* Search queries must be at least two characters long. |
|||
* Searches will fail if they contain 5000 or more results. |
|||
* The API rate is limited to a maximum of 4000 requests per day per IP. |
|||
== リファレンスクライアント == |
|||
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples |
|||
== 関連するコード == |
|||
* {{AUR|python3-aur}} パッケージには AUR のリモート JSON インターフェイスなど AUR のサービスを使用するための Python 3 モジュールが入っています。詳しくは [https://xyne.archlinux.ca/projects/python3-aur/ python3-aur] を参照。 |
|||
* {{Pkg|jshon}} はコマンドラインから JSON をパース・読み込み・作成します。詳しくは [http://kmkeen.com/jshon/ jshon] を参照。 |
|||