Browse Source

docs/guide-pt-BR - typos [ci skip]

9899-cache-bug
Davidson Alencar 9 years ago committed by Alexander Makarov
parent
commit
44c70a8011
  1. 34
      docs/guide-pt-BR/rest-controllers.md
  2. 37
      docs/guide-pt-BR/rest-quick-start.md
  3. 61
      docs/guide-pt-BR/rest-resources.md

34
docs/guide-pt-BR/rest-controllers.md

@ -3,16 +3,16 @@ Controllers (Controladores)
Depois de criar as classes de recursos e especificar como os dados de recursos devem ser formatados, a próxima coisa a fazer é criar ações do controller para expor os recursos para os usuários finais através das APIs RESTful.
Yii fornece duas classes básicas de controller para simplificar seu trabalho de criar ações RESTful: [[yii\rest\Controller]] e [[yii\rest\ActiveController]]. A diferença entre os dois controllers é que o último fornece um conjunto padrão de ações que são especificamente concebidos para lidar com recursos do [Active Record](db-active-record.md). Então, se você estiver usando [Active Record](db-active-record.md) e está confortável com as ações fornecidas, você pode considerar estender suas classes de controller de [[yii\rest\ActiveController]], que permitirá a você criar poderosas APIs RESTful com um mínimo de código.
O Yii fornece duas classes básicas de controller para simplificar seu trabalho de criar ações RESTful: [[yii\rest\Controller]] e [[yii\rest\ActiveController]]. A diferença entre os dois controllers é que o último fornece um conjunto padrão de ações que são especificamente concebidos para lidar com recursos do [Active Record](db-active-record.md). Então, se você estiver usando [Active Record](db-active-record.md) e está confortável com as ações fornecidas, você pode considerar estender suas classes de controller de [[yii\rest\ActiveController]], que permitirá criar poderosas APIs RESTful com um mínimo de código.
Ambos [[yii\rest\Controller]] e [[yii\rest\ActiveController]] fornecem os seguintes recursos, algumas das quais serão descritas em detalhes nas próximas seções:
Ambas classes [[yii\rest\Controller]] e [[yii\rest\ActiveController]] fornecem os seguintes recursos, algumas das quais serão descritas em detalhes nas próximas seções:
* Validação de Método HTTP;
* [Negociação de conteúdo e formatação de dados](rest-response-formatting.md);
* [Autenticação](rest-authentication.md);
* [limitação de taxa](rest-rate-limiting.md).
* [Limitação de taxa](rest-rate-limiting.md).
[[yii\rest\ActiveController]] oferece também os seguintes recursos:
O [[yii\rest\ActiveController]] oferece também os seguintes recursos:
* Um conjunto de ações comumente necessárias: `index`, `view`, `create`, `update`, `delete`, `options`;
* Autorização do usuário em relação à ação solicitada e recursos.
@ -20,7 +20,7 @@ Ambos [[yii\rest\Controller]] e [[yii\rest\ActiveController]] fornecem os seguin
## Criando Classes Controller <span id="creating-controller"></span>
Ao criar uma nova classe de controller, uma convenção em nomear a classe é usar o nome do tipo de recurso no singular. Por exemplo, para disponibilizar as informações do usuário, o controlador pode ser nomeado como `UserController`. Criar uma nova ação é semelhante à criação de uma ação de uma aplicação Web. A única diferença é que em vez de renderizar o resultado usando uma view e chamando o método `render()`, para ações RESTful você retorna diretamente os dados. O [[yii\rest\Controller::serializer|serializer]] e o [[yii\web\Response|response object]] vão converter os dados originais para o formato solicitado. Por exemplo,
Ao criar uma nova classe de controller, uma convenção na nomenclatura da classe é usar o nome do tipo de recurso no singular. Por exemplo, para disponibilizar as informações do usuário, o controlador pode ser nomeado como `UserController`. Criar uma nova ação é semelhante à criação de uma ação de uma aplicação Web. A única diferença é que em vez de renderizar o resultado usando uma view e chamando o método `render()`, para ações RESTful você retorna diretamente os dados. O [[yii\rest\Controller::serializer|serializer]] e o [[yii\web\Response|objeto response]] vão converter os dados originais para o formato solicitado. Por exemplo:
```php
public function actionView($id)
@ -32,7 +32,7 @@ public function actionView($id)
## Filtros <span id="filters"></span>
A maioria dos recursos da API RESTful fornecidos por [[yii\rest\Controller]] são implementadas nos termos de [filters](structure-filters.md).
A maioria dos recursos da API RESTful fornecidos por [[yii\rest\Controller]] são implementadas por [filtros](structure-filters.md).
Em particular, os seguintes filtros serão executados na ordem em que estão listados:
* [[yii\filters\ContentNegotiator|contentNegotiator]]: suporta a negociação de conteúdo, a ser explicado na seção [Formatação de Resposta](rest-response-formatting.md);
@ -42,7 +42,7 @@ Em particular, os seguintes filtros serão executados na ordem em que estão lis
[Limitação de taxa](rest-rate-limiting.md).
Estes filtros são declarados no método [[yii\rest\Controller::behaviors()|behaviors()]].
Você pode sobrescrever esse método para configurar alguns filtros, desativar outros, ou adicionar seus próprios filtros. Por exemplo, se você precisar somente de autenticação básica de HTTP, pode-se utilizar o seguinte código:
Você pode sobrescrever esse método para configurar alguns filtros, desativar outros, ou adicionar seus próprios filtros. Por exemplo, se você precisar somente de autenticação básica de HTTP, pode utilizar o seguinte código:
```php
use yii\filters\auth\HttpBasicAuth;
@ -60,12 +60,12 @@ public function behaviors()
## Estendendo `ActiveController` <span id="extending-active-controller"></span>
Se a sua classe controller estende de [[yii\rest\ActiveController]], você deve configurar a propriedade [[yii\rest\ActiveController::modelClass||modelClass]] para ser o nome da classe de recurso que você pretende servir através deste controller. A classe deve estender de [[yii\db\ActiveRecord]].
Se a sua classe controller estende de [[yii\rest\ActiveController]], você deve configurar a propriedade [[yii\rest\ActiveController::modelClass|modelClass]] para ser o nome da classe de recurso que você pretende servir através deste controller. A classe deve estender de [[yii\db\ActiveRecord]].
### Customizando Ações <span id="customizing-actions"></span>
Por padrão, [[yii\rest\ActiveController]] fornece as seguintes ações:
Por padrão, o [[yii\rest\ActiveController]] fornece as seguintes ações:
* [[yii\rest\IndexAction|index]]: recursos de lista página por página;
* [[yii\rest\ViewAction|view]]: retorna os detalhes de um recurso especificado;
@ -74,7 +74,7 @@ Por padrão, [[yii\rest\ActiveController]] fornece as seguintes ações:
* [[yii\rest\DeleteAction|delete]]: excluir o recurso especificado;
* [[yii\rest\OptionsAction|options]]: retorna os métodos HTTP suportados.
Todas essas ações são declarados através do método [[yii\rest\ActiveController::actions()|actions()]]. Você pode configurar essas ações ou desativar alguns delas, sobrescrevendo o método `actions()`, como mostrado abaixo,
Todas essas ações são declaradas através do método [[yii\rest\ActiveController::actions()|actions()]]. Você pode configurar essas ações ou desativar algumas delas, sobrescrevendo o método `actions()`, como mostrado a seguir:
```php
public function actions()
@ -101,20 +101,20 @@ Por favor, consulte as referências de classe para classes de ação individual
### Executando Verificação de Acesso <span id="performing-access-check"></span>
Ao disponibilizar recursos por meio de APIs RESTful, muitas vezes você precisa verificar se o usuário atual tem permissão para acessar e manipular o(s) recurso(s) solicitado(s). Com [[yii\rest\ActiveController]], isso pode ser feito sobrescrevendo o método [[yii\rest\ActiveController::checkAccess()|checkAccess()]] conforme abaixo,
Ao disponibilizar recursos por meio de APIs RESTful, muitas vezes você precisa verificar se o usuário atual tem permissão para acessar e manipular o(s) recurso(s) solicitado(s). Com o [[yii\rest\ActiveController]], isso pode ser feito sobrescrevendo o método [[yii\rest\ActiveController::checkAccess()|checkAccess()]] conforme a seguir:
```php
/**
* verifica os privilégios do usuário corrente.
* Verifica os privilégios do usuário corrente.
*
* Este método deve ser sobrescrito para verificar se o usuário atual tem o privilégio
* para executar a ação especificada diante do modelo de dados especificado.
* se o usuário não tiver acesso, uma [[ForbiddenHttpException]] deve ser lançada.
*
* @param string $action the ID of the action to be executed
* @param string $action o ID da ação a ser executada
* @param \yii\base\Model $model o model a ser acessado. Se null, isso significa que nenhum model específico está sendo acessado.
* @param array $params additional parameters
* @throws ForbiddenHttpException if the user does not have access
* @param array $params parâmetros adicionais
* @throws ForbiddenHttpException se o usuário não tiver acesso
*/
public function checkAccess($action, $model = null, $params = [])
{
@ -123,7 +123,7 @@ public function checkAccess($action, $model = null, $params = [])
}
```
O método `checkAccess()` será chamado pelas ações padrões do [[yii\rest\ActiveController]]. Se você criar novas ações e também deseja executar verificação de acesso, você deve chamar esse método explicitamente nas novas ações.
O método `checkAccess()` será chamado pelas ações padrões do [[yii\rest\ActiveController]]. Se você criar novas ações e também desejar executar a verificação de acesso, deve chamar esse método explicitamente nas novas ações.
> Dica: Você pode implementar `checkAccess()` usando o [Role-Based Access Control (RBAC) component](security-authorization.md).
> Dica: Você pode implementar `checkAccess()` usando o [componente de Role-Based Access Control (RBAC)](security-authorization.md).

37
docs/guide-pt-BR/rest-quick-start.md

@ -1,14 +1,14 @@
Início Rápido
Introdução
===========
Yii fornece um conjunto de ferramentas para simplificar a tarefa de implementar APIs RESTful Web Service. Em particular, Yii suporta os seguintes recursos sobre APIs RESTful:
O Yii fornece um conjunto de ferramentas para simplificar a tarefa de implementar APIs RESTful Web Service. Em particular, o Yii suporta os seguintes recursos sobre APIs RESTful:
* Prototipagem rápida com suporte para APIs comuns de [Active Record](db-active-record.md);
* Negociação de formato do Response (suporte JSON e XML por padrão);
* Serialização de objeto configurável com suporte a campos de saída selecionáveis;
* formatação adequada para data collection e validação de erros;
* Formatação adequada para a coleção e dados e validação de erros;
* Suporte a [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS);
* Roteamento eficiente com verificação à HTTP verbs (métodos);
* Roteamento eficiente com verificação dos verbs (métodos) HTTP;
* Construído com suporte aos métodos `OPTIONS` e `HEAD`;
* Autenticação e autorização;
* Data caching e HTTP caching;
@ -17,12 +17,12 @@ Yii fornece um conjunto de ferramentas para simplificar a tarefa de implementar
Abaixo, utilizamos um exemplo para ilustrar como você pode construir um conjunto de APIs RESTful com um mínimo de codificação.
Suponha que você deseja expor os dados do usuário via APIs RESTful. Os dados do usuário estão guardados na tabela `user`, e você já criou a classe [active record](db-active-record.md) `app\models\User` para acessar os dados do usuário.
Suponha que você deseja expor os dados do usuário via APIs RESTful. Os dados do usuário estão guardados na tabela `user` e você já criou a classe [active record](db-active-record.md) `app\models\User` para acessar os dados do usuário.
## Criando um Controller (Controlador)<span id="creating-controller"></span>
## Criando um Controller (Controlador) <span id="creating-controller"></span>
Primeiro, crie uma classe [controller](structure-controllers.md) `app\controllers\UserController` como a seguir,
Primeiramente, crie uma classe [controller](structure-controllers.md) `app\controllers\UserController` como a seguir,
```php
namespace app\controllers;
@ -39,7 +39,7 @@ A classe controller estende de [[yii\rest\ActiveController]], que implementa um
como `app\models\User`, o controller sabe qual o model que pode ser usado para a recuperação e manipulação de dados.
## Configurando regras de URL<span id="configuring-url-rules"></span>
## Configurando Regras de URL <span id="configuring-url-rules"></span>
Em seguida, modifique a configuração do componente `urlManager` na configuração da aplicação:
@ -57,9 +57,10 @@ Em seguida, modifique a configuração do componente `urlManager` na configuraç
A configuração acima primeiramente adiciona uma regra de URL para o controller `user` de modo que os dados do usuário podem ser acessados e manipulados com URLs amigáveis e métodos HTTP significativos.
## Ativando o input via JSON<span id="enabling-json-input"></span>
Para fazer a API aceitar dados no formato JSON, configure a propriedade [[yii\web\Request::$parsers|parsers]] do [application component](structure-application-components.md) `request` para usar o [[yii\web\JsonParser]] para realizar input via JSON:
## Ativando o Input via JSON <span id="enabling-json-input"></span>
Para fazer a API aceitar dados no formato JSON, configure a propriedade [[yii\web\Request::$parsers|parsers]] do [componente de aplicação](structure-application-components.md) `request` para usar o [[yii\web\JsonParser]] para realizar input via JSON:
```php
'request' => [
@ -69,7 +70,7 @@ Para fazer a API aceitar dados no formato JSON, configure a propriedade [[yii\we
]
```
> Observação: A configuração acima é opcional. Sem a configuração acima, a API só iria reconhecer os formatos de input `application/x-www-form-urlencoded` e `multipart/form-data`.
> Observação: A configuração acima é opcional. Sem esta configuração, a API só iria reconhecer os formatos de input `application/x-www-form-urlencoded` e `multipart/form-data`.
## Testando <span id="trying-it-out"></span>
@ -81,12 +82,12 @@ Com o mínimo de esforço acima, você já terminou sua tarefa de criar as APIs
* `POST /users`: criar um novo usuário;
* `GET /users/123`: retorna detalhes do usuário 123;
* `HEAD /users/123`: mostra informações gerais do usuário 123;
* `PATCH /users/123` and `PUT /users/123`: atualiza o usuário 123;
* `PATCH /users/123` e `PUT /users/123`: atualiza o usuário 123;
* `DELETE /users/123`: deleta o usuário 123;
* `OPTIONS /users`: mostra os métodos suportados em relação ao endpoint `/users`;
* `OPTIONS /users/123`: mostra os métodos suportados em relação ao endpoint `/users/123`.
> Observação: Yii vai pluralizar automaticamente nomes de controller para uso em endpoints.
> Observação: O Yii vai pluralizar automaticamente nomes de controller para uso em endpoints.
> Você pode configurar isso usando a propriedade [[yii\rest\UrlRule::$pluralize]].
Você pode acessar suas APIs com o comando `curl` mostrado abaixo,
@ -119,7 +120,7 @@ Content-Type: application/json; charset=UTF-8
]
```
Tente alterar o tipo de conteúdo para `application/xml`, e você vai ver o resultado retornado em formato XML:
Tente alterar o tipo de conteúdo para `application/xml` e você vai ver o resultado retornado em formato XML:
```
$ curl -i -H "Accept:application/xml" "http://localhost/users"
@ -164,7 +165,7 @@ Content-Type: application/json; charset=UTF-8
{"id":1,"username":"example","email":"user@example.com","created_at":1414674789,"updated_at":1414674789}
```
> Dica: Você também pode acessar suas APIs via navegador da Web, digitando a URL `http://localhost/users`. No entanto, você pode precisar de alguns plugins do navegador para enviar cabeçalhos de solicitações específicas.
> Dica: Você também pode acessar suas APIs via navegador, digitando a URL `http://localhost/users`. No entanto, você pode precisar de alguns plugins do navegador para enviar cabeçalhos de solicitações específicas.
Como você pode ver, no cabeçalho da resposta, há informações sobre a contagem total, número de páginas, etc. Há também links que permitem navegar para outras páginas de dados. Por exemplo, `http://localhost/users?page=2` lhe daria a próxima página dos dados de usuário.
@ -175,15 +176,15 @@ Usando os parâmetros `fields` e `expand`, você também pode especificar os cam
> inclui alguns campos confidenciais,
> Tal como `password_hash`, `auth_key`. Você certamente não quer que
> eles apareçam no resultado da sua API.
> Você pode e deve filtrar esses campos, conforme descrito na secção
> Você pode e deve filtrar esses campos, conforme descrito na seção
> [Response Formatting](rest-response-formatting.md).
## Resumo <span id="summary"></span>
Usando o Yii RESTful API framework, você implementa um endpoint desses campos, conforme descrito na secção a nível de ações do controller e você usa um controller para organizar as ações que implementam os endpoints para um único tipo de recurso.
Usando o framework API RESTful do Yii, você implementa um endpoint desses campos, conforme descrito na seção a nível de ações do controller e você usa um controller para organizar as ações que implementam os endpoints para um único tipo de recurso.
Os recursos são representados como modelos de dados, que se estendem a partir da classe [[yii\base\Model]]. Se você estiver trabalhando com bancos de dados (relational or NoSQL), é recomendado que você use [[yii\db\ActiveRecord|ActiveRecord]] para representar recursos.
Os recursos são representados como modelos de dados, que se estendem a partir da classe [[yii\base\Model]]. Se você estiver trabalhando com bancos de dados (relacional ou NoSQL), é recomendado que você use [[yii\db\ActiveRecord|ActiveRecord]] para representar recursos.
Você pode usar [[yii\rest\UrlRule]] para simplificar o roteamento para seus endpoints API.

61
docs/guide-pt-BR/rest-resources.md

@ -6,17 +6,18 @@ APIs RESTful tratam de como acessar e manipular *recursos*. Você pode ver recur
Embora não haja restrição na forma de representar um recurso, no Yii você normalmente representaria recursos como objetos de [[yii\base\Model]] ou de uma classe filha (ex. [[yii\db\ActiveRecord]]), pelas seguintes razões:
* [[yii\base\Model]] implementa a interface [[yii\base\Arrayable]], que permite que você personalize como você deseja expor dados de recursos através das APIs RESTful.
* [[yii\base\Model]] suporta [input validation](input-validation.md), que é importante se as suas APIs RESTful precisarem suportar entrada de dados.
* [[yii\base\Model]] suporta [validação de dados de entrada](input-validation.md), que é importante se as suas APIs RESTful precisarem suportar entrada de dados.
* [[yii\db\ActiveRecord]] fornece acesso poderoso a banco de dados com suporte a manipulação dos dados, o que o torna um ajuste perfeito se seus dados de recursos estiverem armazenado em bases de dados.
Nesta seção, vamos principalmente descrever como uma classe de recurso que se estende de [[yii\base\Model]] (ou alguma classe filha) pode especificar quais os dados podem ser retornados via APIs RESTful. Se a classe de recurso não estender de [[yii\base\Model]], antão todas as suas variáveis públicas serão retornadas.
Nesta seção, vamos principalmente descrever como uma classe de recurso que se estende de [[yii\base\Model]] (ou alguma classe filha) pode especificar quais os dados podem ser retornados via APIs RESTful. Se a classe de recurso não estender de [[yii\base\Model]], então todas as suas variáveis públicas serão retornadas.
## Campos<span id="fields"></span>
Ao incluir um recurso em uma resposta da API RESTful, o recurso precisa ser serializado em uma string. Yii quebra este processo em duas etapas. Primeiro, o recurso é convertido em um array utilizando [[yii\rest\Serializer]]. Por último, o array é serializado em uma string no formato solicitado (ex. JSON, XML) através do [[yii\web\ResponseFormatterInterface|response formatters]]. O primeiro passo é o que você deve centrar-se principalmente no desenvolvimento de uma classe de recurso.
## Campos <span id="fields"></span>
Ao incluir um recurso em uma resposta da API RESTful, o recurso precisa ser serializado em uma string. O Yii quebra este processo em duas etapas. Primeiro, o recurso é convertido em um array utilizando [[yii\rest\Serializer]]. Por último, o array é serializado em uma string no formato solicitado (ex. JSON, XML) através do [[yii\web\ResponseFormatterInterface|response formatters]]. O primeiro passo é o que você deve centrar-se principalmente no desenvolvimento de uma classe de recurso.
Sobrescrevendo [[yii\base\Model::fields()|fields()]] e/ou [[yii\base\Model::extraFields()|extraFields()]], você pode especificar quais os dados, chamados *fields*, no recurso podem ser colocados no array.
A diferença entre estes dois métodos é que o primeiro especifica o conjunto padrão de campos que devem ser incluídos no array, enquanto que o último especifica campos adicionais que podem ser incluídos no array, se um usuário final solicitá-los via o parâmetro de pesquisa `expand`. Por exemplo,
A diferença entre estes dois métodos é que o primeiro especifica o conjunto padrão de campos que devem ser incluídos no array, enquanto que o último especifica campos adicionais que podem ser incluídos no array, se um usuário final solicitá-los via o parâmetro de pesquisa `expand`. Por exemplo:
```
// retorna todos os campos declarados em fields()
@ -37,19 +38,19 @@ http://localhost/users?fields=id,email&expand=profile
Por padrão, [[yii\base\Model::fields()]] retorna todos os atributos do model como campos, enquanto [[yii\db\ActiveRecord::fields()]] só retorna os atributos que tenham sido preenchidos a partir do DB.
Você pode sobrescrever `fields()` para adicionar, remover, renomear ou redefinir campos. O valor do retorno de `fields()` deve ser um array. As chaves do array são os nomes dos campos, e os valores são as definições dos campos correspondentes, que podem ser tanto nomes de propriedade/atributo ou funções anônimas retornando o valor do campo correspondente. No caso especial quando um nome de um campo é o mesmo que sua definição de nome de atributo, você pode omitir a chave do array. For example,
Você pode sobrescrever `fields()` para adicionar, remover, renomear ou redefinir campos. O valor do retorno de `fields()` deve ser um array. As chaves do array são os nomes dos campos e os valores são as definições dos campos correspondentes, que podem ser tanto nomes de propriedade/atributo ou funções anônimas retornando o valor do campo correspondente. No caso especial de um nome de um campo for o mesmo que sua definição de nome de atributo, você pode omitir a chave do array. Por exemplo:
```php
//explicitamente listar todos os campos,
//melhor usado quando você quer ter certeza de que as alterações
//na sua tabela ou atributo do model não causam alteração
//nos seus campos (Manter compatibilidade da API).
// explicitamente lista todos os campos,
// melhor usado quando você quer ter certeza de que as alterações
// na sua tabela ou atributo do model não causaram alterações
// nos seus campos (Manter compatibilidade da API).
public function fields()
{
return [
// Nome do campo é igual ao nome do atributo
'id',
// nme do campo é "email", o nome do atributo correspondente é "email_address"
// nome do campo é "email", o nome do atributo correspondente é "email_address"
'email' => 'email_address',
// nome do campo é "name", seu valor é definido por um PHP callback
'name' => function ($model) {
@ -71,21 +72,19 @@ public function fields()
}
```
> Aviso: Porque, por padrão, todos os atributos de um model serão incluídos
> no resultados da API, você deve examinar os seus dados para se certificar de que
> Aviso: Como o padrão é ter todos os atributos de um model incluídos
> no resultados da API, você deve examinar os seus dados para certificar-se de que
> eles não contenham informações confidenciais.
> Se existirem tais informações, você deve sobrescrever `fields()` para filtrá-los.
> No exemplo acima, nós escolhemos filtrar `auth_key`,
> `password_hash` e `password_reset_token`.
### Sobrescrevendo `extraFields()` <span id="overriding-extra-fields"></span>
Por padrão, [[yii\base\Model::extraFields()]] não retorna nada, enquanto [[yii\db\ActiveRecord::extraFields()]] retorna os nomes das relações que foram populadas a partir do DB.
Por padrão, o [[yii\base\Model::extraFields()]] não retorna nada, enquanto o [[yii\db\ActiveRecord::extraFields()]] retorna os nomes das relações que foram populadas a partir do DB.
O formato do retorno dos dados do `extraFields()` é o mesmo de `fields()`. Geralmente, `extraFields()` é mais usado para especificar os campos cujos valores são objetos
. Por exemplo, Dada a seguinte declaração de campo,
O formato do retorno dos dados do `extraFields()` é o mesmo de `fields()`. Geralmente, `extraFields()` é mais usado para especificar os campos cujos valores são objetos. Por exemplo, dada a seguinte declaração de campo,
```php
public function fields()
@ -118,10 +117,10 @@ o request com `http://localhost/users?fields=id,email&expand=profile` pode retor
## Links <span id="links"></span>
[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), Uma abreveação de “Hypermedia as the Engine of Application State”, promove as APIs Restfull retornar informações para permitir aos clientes descobrir as ações suportadas pelos recursos retornados. O sentido de HATEOAS é retornar um conjunto de hiperlinks em relação às informações quando os recursos de dados são servidos pelas APIs.
[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) é uma abreviação de “Hypermedia as the Engine of Application State”, que promove as APIs Restfull retornarem informações para permitir aos clientes descobrirem quais ações são suportadas pelos recursos retornados. O sentido de HATEOAS é retornar um conjunto de hiperlinks em relação às informações quando os recursos de dados são servidos pelas APIs.
Suas classes de recurso podem suportar HATEOAS implementando a interface [[yii\web\Linkable]]. Esta interface contém um único método [[yii\web\Linkable::getLinks()|getLinks()]] que deve retornar uma lista de [[yii\web\Link|links]].
Tipicamente, Você deve retornar pelo menos o link `self` representando a URL para o mesmo objeto de recurso. Por exemplo,
Suas classes de recursos podem suportar HATEOAS implementando a interface [[yii\web\Linkable]]. Esta interface contém um único método [[yii\web\Linkable::getLinks()|getLinks()]] que deve retornar uma lista de [[yii\web\Link|links]].
Tipicamente, você deve retornar pelo menos o link `self` representando a URL para o mesmo objeto de recurso. Por exemplo:
```php
use yii\db\ActiveRecord;
@ -140,8 +139,7 @@ class User extends ActiveRecord implements Linkable
}
```
quando o `User` object is returned in a response, it will contain a `_links` element representing the links related
to the user, for example,
Quando o objeto `User` for retornado em uma resposta, será composto de um elemento `_links` representando os links relacionados ao *user*, por exemplo:
```
{
@ -159,10 +157,9 @@ to the user, for example,
## Collections (Coleções) <span id="collections"></span>
Objetos de recurso podem ser agrupados em *collections*. Cada collection contém uma lista de objetos de recurso de mesmo tipo.
Objetos de recursos podem ser agrupados em *collections*. Cada collection contém uma lista de objetos de recurso do mesmo tipo.
Embora collections podem ser representados como arrays, Normalmente, é preferível representá-los como [data providers](output-data-providers.md). Isto porque data providers suportam ordenação e paginação de recursos, que é um recurso comumente necessária para APIs RESTful retornando collections. Por exemplo,
a seguinte ação retorna um data provider sobre o recurso post:
Embora os collections podem ser representados como arrays, normalmente, é preferível representá-los como [data providers](output-data-providers.md). Isto porque data providers suportam ordenação e paginação de recursos, que é um recurso comumente necessário para APIs RESTful retornarem collections. Por exemplo, ação a seguir retorna um data provider sobre o recurso *post*:
```php
namespace app\controllers;
@ -182,14 +179,14 @@ class PostController extends Controller
}
```
Quando um data provider está enviando uma resposta com a API RESTful, [[yii\rest\Serializer]] pegará a a página atual de recursos e serializa-la como uma rray de objetos de recurso. Adicionalmente, [[yii\rest\Serializer]] Também incluirá as informações de paginação pelo seguinte cabeçalho HTTP:
Quando um data provider está enviando uma resposta com a API RESTful, o [[yii\rest\Serializer]] pegará a página atual de recursos e a serializa como um array de objetos de recurso. Adicionalmente, o [[yii\rest\Serializer]] também incluirá as informações de paginação pelo seguinte cabeçalho 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`: O número total de recursos;
* `X-Pagination-Page-Count`: O número de páginas;
* `X-Pagination-Current-Page`: A página atual (a primeira página é 1);
* `X-Pagination-Per-Page`: O numero de recursos em cada página;
* `Link`: Um conjunto de links de navegação, permitindo que o cliente percorra os recursos página por página.
Um exemplo pode ser encontrado na seção [Quick Start](rest-quick-start.md#trying-it-out).
Um exemplo pode ser encontrado na seção [Introdução](rest-quick-start.md#trying-it-out).

Loading…
Cancel
Save