Commit bd5d0f12 by Nobuo Kihara

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

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