「Aurweb RPC インターフェイス」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(序文を英語版にあわせて修正)
(正しいページへのリダイレクトを追加)
タグ: 新規リダイレクト
 
(他の1人の利用者による、間の1版が非表示)
1行目: 1行目:
  +
#REDIRECT [[Aurweb RPC インターフェース]]
[[Category:パッケージ開発]]
 
[[Category:Arch プロジェクト]]
 
[[es:Aurweb RPC interface]]
 
[[en:Aurweb RPC interface]]
 
[[pt:Aurweb RPC interface]]
 
{{Related articles start}}
 
{{Related|公式リポジトリウェブインターフェイス}}
 
{{Related articles end}}
 
[https://aur.archlinux.org/rpc.php Aurweb RPC インターフェイス] は [[AUR]] の軽量 [[Wikipedia:Remote procedure call|RPC]] インターフェイスです。クエリは HTTP GET リクエストとして送信され、サーバーは [https://www.json.org/ JSON] で応答します。
 
{{Note|この記事では2018年7月7日の AUR v4.7.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] を参照。
 

2021年6月30日 (水) 00:17時点における最新版