Commit bd5d0f12 by Nobuo Kihara

docs/guide-ja/rest-resources.md - completed [ci skip]

parent ee73ba1a
......@@ -129,7 +129,7 @@ RESTful ウェブサービス
----------------------
* [クイックスタート](rest-quick-start.md)
* **翻訳中** [リソース](rest-resources.md)
* [リソース](rest-resources.md)
* **翻訳中** [コントローラ](rest-controllers.md)
* **翻訳中** [ルーティング](rest-routing.md)
* **翻訳中** [レスポンスの書式設定](rest-response-formatting.md)
......
......@@ -4,16 +4,16 @@
Yii は、RESTful ウェブサービス API を実装する仕事を簡単にするために、一揃いのツールを提供しています。
具体的に言えば、RESTful API に関する次の機能をサポートしています。
* [アクティブレコード](db-active-record.md) のための共通 API をサポートした迅速なプロトタイプ作成;
* レスポンス形式のネゴシエーション (デフォルトで JSON と XML をサポート);
* 出力フィールドの選択をサポートした、カスタマイズ可能なオブジェクトのシリアライゼーション;
* コレクションデータとバリデーションエラーの適切な書式設定;
* [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) のサポート;
* HTTP 動詞を適切にチェックする効率的なルーティング;
* `OPTIONS` および `HEAD` 動詞のサポートを内蔵;
* 認証と権限付与;
* データキャッシュと HTTP キャッシュ;
* 転送レート制限;
* [アクティブレコード](db-active-record.md) のための共通 API をサポートした迅速なプロトタイプ作成
* レスポンス形式のネゴシエーション (デフォルトで JSON と XML をサポート)
* 出力フィールドの選択をサポートした、カスタマイズ可能なオブジェクトのシリアライゼーション
* コレクションデータとバリデーションエラーの適切な書式設定
* [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) のサポート
* HTTP 動詞を適切にチェックする効率的なルーティング
* `OPTIONS` および `HEAD` 動詞のサポートを内蔵
* 認証と権限付与
* データキャッシュと HTTP キャッシュ
* 転送レート制限
以下においては、例を使って、どのようにして最小限のコーディング労力で一組の RESTful API を構築することが出来るかを説明します。
......@@ -80,15 +80,15 @@ API 縺 JSON 蠖「蠑上〒蜈・蜉帙ョ繝シ繧ソ繧貞女縺大叙繧九%縺ィ縺悟譚・繧九h縺↓
上記で示した最小限の労力によって、ユーザのデータにアクセスする RESTful API を作成する仕事は既に完成しています。
作成した API は次のものを含みます。
* `GET /users`: 全てのユーザをページごとに一覧する;
* `HEAD /users`: ユーザ一覧の概要を示す;
* `POST /users`: 新しいユーザを作成する;
* `GET /users/123`: ユーザ 123 の詳細を返す;
* `HEAD /users/123`: ユーザ 123 の概要を示す;
* `PATCH /users/123``PUT /users/123`: ユーザ 123 を更新する;
* `DELETE /users/123`: ユーザ 123 を削除する;
* `OPTIONS /users`: エンドポイント `/users` に関してサポートされている動詞を示す;
* `OPTIONS /users/123`: エンドポイント `/users/123` に関してサポートされている動詞を示す;
* `GET /users`: 全てのユーザをページごとに一覧する
* `HEAD /users`: ユーザ一覧の概要を示す
* `POST /users`: 新しいユーザを作成する
* `GET /users/123`: ユーザ 123 の詳細を返す
* `HEAD /users/123`: ユーザ 123 の概要を示す
* `PATCH /users/123``PUT /users/123`: ユーザ 123 を更新する
* `DELETE /users/123`: ユーザ 123 を削除する
* `OPTIONS /users`: エンドポイント `/users` に関してサポートされている動詞を示す
* `OPTIONS /users/123`: エンドポイント `/users/123` に関してサポートされている動詞を示す
> Info|情報: Yii は、エンドポイントとして使用されるコントローラの名前を自動的に複数形にします。
> これは [[yii\rest\UrlRule::$pluralize]] プロパティを使って構成することが可能です。
......
......@@ -93,12 +93,11 @@ public function fields()
### `extraFields()` をオーバーライドする<a name="overriding-extra-fields"></a>
By default, [[yii\base\Model::extraFields()]] returns nothing, while [[yii\db\ActiveRecord::extraFields()]]
returns the names of the relations that have been populated from DB.
デフォルトでは、[[yii\base\Model::extraFields()]] は何も返しませんが、[[yii\db\ActiveRecord::extraFields()]] は DB から取得されたリレーションの名前を返します。
The return data format of `extraFields()` is the same as that of `fields()`. Usually, `extraFields()`
is mainly used to specify fields whose values are objects. For example, given the following field
declaration,
`extraFields()` によって返されるデータの形式は `fields()` のそれと同じです。
通常、`extraFields()` は、主として、値がオブジェクトであるフィールドを指定するのに使用されます。
例えば、次のようなフィールドの宣言があるとしましょう。
```php
public function fields()
......@@ -112,7 +111,7 @@ public function extraFields()
}
```
the request with `http://localhost/users?fields=id,email&expand=profile` may return the following JSON data:
`http://localhost/users?fields=id,email&expand=profile` というリクエストは、次のような JSON データを返すことが出来ます。
```php
[
......@@ -129,16 +128,16 @@ the request with `http://localhost/users?fields=id,email&expand=profile` may ret
```
## Links <a name="links"></a>
## リンク <a name="links"></a>
[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), an abbreviation for Hypermedia as the Engine of Application State,
promotes that RESTful APIs should return information that allow clients to discover actions supported for the returned
resources. The key of HATEOAS is to return a set of hyperlinks with relation information when resource data are served
by the APIs.
[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) は、Hypermedia as the Engine of Application State (アプリケーション状態のエンジンとしてのハイパーメディア) の略称です。
HATEOAS は、RESTful API は自分が返すリソースについて、どのようなアクションがサポートされているかをクライアントが発見できるような情報を返すべきである、という概念です。
HATEOAS のキーポイントは、リソースデータが API によって提供されるときには、関連する情報を一群のハイパーリンクによって返すべきである、ということです。
Your resource classes may support HATEOAS by implementing the [[yii\web\Linkable]] interface. The interface
contains a single method [[yii\web\Linkable::getLinks()|getLinks()]] which should return a list of [[yii\web\Link|links]].
Typically, you should return at least the `self` link representing the URL to the resource object itself. For example,
あなたのリソースクラスは、[[yii\web\Linkable]] インタフェイスを実装することによって、HATEOAS をサポートすることが出来ます。
このインタフェイスは、[[yii\web\Link|リンク]] のリストを返すべき [[yii\web\Linkable::getLinks()|getLinks()]] メソッド一つだけを含みます。
典型的には、少なくとも、リソースオブジェクトそのものへの URL を表現する `self` リンクを返さなければなりません。
例えば、
```php
use yii\db\ActiveRecord;
......@@ -157,8 +156,8 @@ class User extends ActiveRecord implements Linkable
}
```
When a `User` object is returned in a response, it will contain a `_links` element representing the links related
to the user, for example,
`User` オブジェクトがレスポンスで返されるとき、レスポンスはそのユーザに関連するリンクを表現する `_links` 要素を含むことになります。
例えば、
```
{
......@@ -172,15 +171,15 @@ to the user, for example,
```
## Collections <a name="collections"></a>
## コレクション <a name="collections"></a>
Resource objects can be grouped into *collections*. Each collection contains a list of resource objects
of the same type.
リソースオブジェクトは *コレクション* としてグループ化することが出来ます。
各コレクションは、同じ型のリソースのリストを含みます。
While collections can be represented as arrays, it is usually more desirable to represent them
as [data providers](output-data-providers.md). This is because data providers support sorting and pagination
of resources, which is a commonly needed feature for RESTful APIs returning collections. For example,
the following action returns a data provider about the post resources:
コレクションは配列として表現することも可能ですが、通常は、[データプロバイダ](output-data-providers.md) として表現する方がより望ましい方法です。
これは、データプロバイダがリソースの並べ替えとページネーションをサポートしているからです。
並べ替えとページネーションは、コレクションを返す RESTful API にとっては、普通に必要とされる機能です。
例えば、次のアクションは投稿のリソースについてデータプロバイダを返すものです。
```php
namespace app\controllers;
......@@ -200,14 +199,13 @@ class PostController extends Controller
}
```
When a data provider is being sent in a RESTful API response, [[yii\rest\Serializer]] will take out the current
page of resources and serialize them as an array of resource objects. Additionally, [[yii\rest\Serializer]]
will also include the pagination information by the following HTTP headers:
データプロバイダが RESTful API のレスポンスで送信される場合は、[[yii\rest\Serializer]] が現在のページのリソースを取り出して、リソースオブジェクトの配列としてシリアライズします。
それだけでなく、[[yii\rest\Serializer]] は次の HTTP ヘッダを使ってページネーション情報もレスポンスに含めます。
* `X-Pagination-Total-Count`: The total number of resources;
* `X-Pagination-Page-Count`: The number of pages;
* `X-Pagination-Current-Page`: The current page (1-based);
* `X-Pagination-Per-Page`: The number of resources in each page;
* `Link`: A set of navigational links allowing client to traverse the resources page by page.
* `X-Pagination-Total-Count`: リソースの総数
* `X-Pagination-Page-Count`: ページ数
* `X-Pagination-Current-Page`: 現在のページ (1 から始まる)
* `X-Pagination-Per-Page`: 各ページのリソース数
* `Link`: クライアントがリソースをページごとにたどることが出来るようにするための一群のナビゲーションリンク
An example may be found in the [Quick Start](rest-quick-start.md#trying-it-out) section.
その一例を [クイックスタート](rest-quick-start.md#trying-it-out) の節で見ることが出来ます。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment