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

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(カテゴリを修正)
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
[[Category:パッケージ開発]]
+
[[Category:パッケージ管理]]
 
[[Category:Arch プロジェクト]]
 
[[Category:Arch プロジェクト]]
 
[[es:Aurweb RPC interface]]
 
[[es:Aurweb RPC interface]]
30行目: 30行目:
 
* {{ic|name-desc}} (パッケージ名と説明の両方で検索)
 
* {{ic|name-desc}} (パッケージ名と説明の両方で検索)
 
* {{ic|maintainer}} (パッケージメンテナで検索)
 
* {{ic|maintainer}} (パッケージメンテナで検索)
  +
* {{ic|depends}} (search for packages that depend on keywords)
  +
* {{ic|makedepends}} (search for packages that makedepend on keywords)
  +
* {{ic|optdepends}} (search for packages that optdepend on keywords)
  +
* {{ic|checkdepends}} (search for packages that checkdepend on keywords)
   
 
{{ic|by}} パラメータは省略することができ、その場合は {{ic|name-desc}} がデフォルトです。
 
{{ic|by}} パラメータは省略することができ、その場合は {{ic|name-desc}} がデフォルトです。
44行目: 48行目:
 
{{ic|john}} によってメンテナンスされているパッケージを検索:
 
{{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&by=maintainer&arg=john</nowiki>
  +
  +
  +
Search for packages that have {{ic|foobar}} as `makedepends`:
  +
<nowiki>https://aur.archlinux.org/rpc/?v=5&type=search&by=makedepends&arg=foobar</nowiki>
   
 
コールバックを指定して検索:
 
コールバックを指定して検索:
81行目: 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}} の場合は空の配列になります。
   
==== 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''}}.
+
{{ic|''ReturnData''}} のタイプは、{{ic|''ReturnType''}} {{ic|search}} または{{ic|multiinfo}} の場合は辞書オブジェクトの配列で、{{ic|''ReturnType''}} {{ic|error}} の場合は空の配列です。
   
For the {{ic|''ReturnType''}} {{ic|''search''}}, {{ic|''ReturnData''}} may contain the following fields:
+
{{ic|''ReturnType''}} {{ic|''search''}} の場合、{{ic|''ReturnData''}} には以下のフィールドが含まれている場合があります:
   
 
* {{ic|ID}}
 
* {{ic|ID}}
102行目: 110行目:
 
* {{ic|URLPath}}
 
* {{ic|URLPath}}
   
For the {{ic|''ReturnType''}} {{ic|''info''}} and {{ic|''multiinfo''}}, {{ic|''ReturnData''}} may additionally contain the following fields:
+
{{ic|''ReturnType''}} {{ic|''info''}} または {{ic|''multiinfo''}} の場合、 {{ic|''ReturnData''}} にはさらに次のフィールドが含まれる場合があります:
   
 
* {{ic|Depends}}
 
* {{ic|Depends}}
115行目: 123行目:
 
* {{ic|Keywords}}
 
* {{ic|Keywords}}
   
  +
パッケージに含まれていないフィールドは出力から省略されます。
Fields that a package does not contain will be omitted from the output.
 
   
 
==== error ====
 
==== error ====
182行目: 190行目:
 
引数に RPC コールの結果が設定されて JavaScript 関数 {{Ic|jsonp1192244621103}} が自動的に呼び出されます。
 
引数に 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.
+
* 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 で応答します。

ノート: この記事では2018年7月7日の AUR v4.7.0 で更新された RPC インターフェース API バージョン5 について説明しています。

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&…

pkg1pkg2 は情報を取得したいパッケージの名前に置き換えてください (完全一致です)。

返り値タイプは multiinfo または error になります。

例:

foobar パッケージの情報を取得:

https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foobar

foobarbar パッケージの情報を取得:

https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=foo&arg[]=bar

返り値タイプ

返り値は3つあるタイプのどれかになります。かならずタイプを返すので、操作の結果がエラーだったかどうか判断することができます。

返り値のペイロードは以下の形式になっています:

{"version":5,"type":ReturnType,"resultcount":0,"results":ReturnData}

ReturnType は文字列で、以下のうちのどれかになります:

  • search
  • multiinfo
  • error

ReturnTypesearchmultiinfo の場合は ReturnData はオブジェクト配列となり、ReturnTypeerror の場合は空の配列になります。

戻り値

ReturnData のタイプは、ReturnTypesearch またはmultiinfo の場合は辞書オブジェクトの配列で、ReturnType error の場合は空の配列です。

ReturnType search の場合、ReturnData には以下のフィールドが含まれている場合があります:

  • ID
  • Name
  • PackageBaseID
  • PackageBase
  • Version
  • Description
  • URL
  • NumVotes
  • Popularity
  • OutOfDate
  • Maintainer
  • FirstSubmitted
  • LastModified
  • URLPath

ReturnTypeinfo または multiinfo の場合、 ReturnData にはさらに次のフィールドが含まれる場合があります:

  • Depends
  • MakeDepends
  • OptDepends
  • CheckDepends
  • Conflicts
  • Provides
  • Replaces
  • Groups
  • License
  • Keywords

パッケージに含まれていないフィールドは出力から省略されます。

error

error タイプはエラーのレスポンス文字列を返り値に含みます。エラーレスポンスは searchinfo クエリタイプで返ってくることがあります。

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