「Aurweb RPC インターフェース」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→search: 英語版より追記) |
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを修正) |
||
| (同じ利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
| − | [[Category:パッケージ |
+ | [[Category:パッケージ管理]] |
[[Category:Arch プロジェクト]] |
[[Category:Arch プロジェクト]] |
||
[[es:Aurweb RPC interface]] |
[[es:Aurweb RPC interface]] |
||
| 89行目: | 89行目: | ||
{{ic|''ReturnType''}} が {{ic|search}} と {{ic|multiinfo}} の場合は {{ic|''ReturnData''}} はオブジェクト配列となり、{{ic|''ReturnType''}} が {{ic|error}} の場合は空の配列になります。 |
{{ic|''ReturnType''}} が {{ic|search}} と {{ic|multiinfo}} の場合は {{ic|''ReturnData''}} はオブジェクト配列となり、{{ic|''ReturnType''}} が {{ic|error}} の場合は空の配列になります。 |
||
| − | ==== |
+ | ==== 戻り値 ==== |
| − | + | {{ic|''ReturnData''}} のタイプは、{{ic|''ReturnType''}} が {{ic|search}} または{{ic|multiinfo}} の場合は辞書オブジェクトの配列で、{{ic|''ReturnType''}} {{ic|error}} の場合は空の配列です。 |
|
| − | + | {{ic|''ReturnType''}} {{ic|''search''}} の場合、{{ic|''ReturnData''}} には以下のフィールドが含まれている場合があります: |
|
* {{ic|ID}} |
* {{ic|ID}} |
||
| 110行目: | 110行目: | ||
* {{ic|URLPath}} |
* {{ic|URLPath}} |
||
| − | + | {{ic|''ReturnType''}} が {{ic|''info''}} または {{ic|''multiinfo''}} の場合、 {{ic|''ReturnData''}} にはさらに次のフィールドが含まれる場合があります: |
|
* {{ic|Depends}} |
* {{ic|Depends}} |
||
| 123行目: | 123行目: | ||
* {{ic|Keywords}} |
* {{ic|Keywords}} |
||
| + | パッケージに含まれていないフィールドは出力から省略されます。 |
||
| − | Fields that a package does not contain will be omitted from the output. |
||
==== error ==== |
==== error ==== |
||
| 190行目: | 190行目: | ||
引数に RPC コールの結果が設定されて JavaScript 関数 {{Ic|jsonp1192244621103}} が自動的に呼び出されます。 |
引数に RPC コールの結果が設定されて JavaScript 関数 {{Ic|jsonp1192244621103}} が自動的に呼び出されます。 |
||
| − | == |
+ | == 制限事項 == |
| − | * HTTP GET |
+ | * HTTP GET リクエストは、最大長 8190バイトのURIに制限されていますが、HTTP/2 を使用して nginx サーバーで実行されている公式AURインスタンスは、[https://nginx.org/en/docs/http/ngx_http_v2_module.html#http2_max_field_size デフォルトの URI 最大長]の制限である 4443バイトを使用します。引数として約200を超えるパッケージを含む info リクエストは分割する必要があります。 |
| + | * 検索クエリは少なくとも2文字以上である必要があります。 |
||
| − | * Search queries must be at least two characters long. |
||
| + | * 検索結果が5000件以上の場合、検索は失敗します。 |
||
| − | * Searches will fail if they contain 5000 or more results. |
||
| + | * API レートは 1 IPあたり 1 日最大 4000リクエストに制限されています。 |
||
| − | * 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 |
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (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] を参照。 |
||
2023年4月28日 (金) 17:38時点における最新版
関連記事
Aurweb RPC インターフェース は AUR の軽量 RPC インターフェースです。クエリは HTTP GET リクエストとして送信され、サーバーは JSON で応答します。
目次
API の使用方法
クエリタイプ
以下の2つのクエリタイプが存在します:
- search
- info
search
以下の形式のリクエストを実行することでパッケージを検索できます:
/rpc/?v=5&type=search&by=field&arg=keywords
keywords は検索単語に field は以下の値のどれかに置き換えてください:
name(パッケージ名だけで検索)name-desc(パッケージ名と説明の両方で検索)maintainer(パッケージメンテナで検索)depends(search for packages that depend on keywords)makedepends(search for packages that makedepend on keywords)optdepends(search for packages that optdepend on keywords)checkdepends(search for packages that checkdepend on keywords)
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
Search for packages that have foobar as `makedepends`:
https://aur.archlinux.org/rpc/?v=5&type=search&by=makedepends&arg=foobar
コールバックを指定して検索:
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 の場合は空の配列になります。
戻り値
ReturnData のタイプは、ReturnType が search またはmultiinfo の場合は辞書オブジェクトの配列で、ReturnType error の場合は空の配列です。
ReturnType search の場合、ReturnData には以下のフィールドが含まれている場合があります:
IDNamePackageBaseIDPackageBaseVersionDescriptionURLNumVotesPopularityOutOfDateMaintainerFirstSubmittedLastModifiedURLPath
ReturnType が info または multiinfo の場合、 ReturnData にはさらに次のフィールドが含まれる場合があります:
DependsMakeDependsOptDependsCheckDependsConflictsProvidesReplacesGroupsLicenseKeywords
パッケージに含まれていないフィールドは出力から省略されます。
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 が自動的に呼び出されます。
制限事項
- HTTP GET リクエストは、最大長 8190バイトのURIに制限されていますが、HTTP/2 を使用して nginx サーバーで実行されている公式AURインスタンスは、デフォルトの URI 最大長の制限である 4443バイトを使用します。引数として約200を超えるパッケージを含む info リクエストは分割する必要があります。
- 検索クエリは少なくとも2文字以上である必要があります。
- 検索結果が5000件以上の場合、検索は失敗します。
- API レートは 1 IPあたり 1 日最大 4000リクエストに制限されています。
リファレンスクライアント
時と場合によっては例があったほうが物事を理解しやすいものです。リファレンス実装 (jQuery, python, ruby) が次の url にあります: https://github.com/cactus/random/tree/2b72a1723bfc8ae64eed6a3c40cb154accae3974/aurjson_examples