Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
abbdf10c
Commit
abbdf10c
authored
Aug 31, 2014
by
Dmitry Korolev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
content translated
parent
c9f8644d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
36 deletions
+35
-36
rest-response-formatting.md
docs/guide-ru/rest-response-formatting.md
+35
-36
No files found.
docs/guide-ru/rest-response-formatting.md
View file @
abbdf10c
Response Formatting
Форматирование ответа
===================
===================
When handling a RESTful API request, an application usually takes the following steps that are related
При обработке RESTful API запросов приложение обычно выполняет следующие шаги, связанные с форматированием ответа:
with response formatting:
1.
Determine various factors that may affect the response format, such as media type, language, version, etc
.
1.
Определяет различные факторы, которые могут повлиять на формат ответа, такие как media type, язык, версия и т.д
.
This process is also known as
[
content negotiation
](
http://en.wikipedia.org/wiki/Content_negotiation
)
.
Этот процесс также известен как
[
обсуждение содержимого
](
http://en.wikipedia.org/wiki/Content_negotiation
)
.
2.
Convert resource objects into arrays, as described in the
[
Resources
](
rest-resources.md
)
section
.
2.
Конвертирует объекты ресурсов в массивы, как описано в секции
[
Ресурсы
](
rest-resources.md
)
.
This is done by
[
[yii\rest\Serializer
]
].
Это задача для
[
[yii\rest\Serializer
]
].
3.
Convert arrays into a string in the format as determined by the content negotiation step. This is
3.
Конвертирует массивы в строке в формате, определенном на этапе обсуждения содержимого. Это задача для
done by
[
[yii\web\ResponseFormatterInterface|response formatters
]
] registered with
[
[yii\web\ResponseFormatterInterface|форматера ответов
]
], регистрируемого с помощью компонента приложения
the
[
[yii\web\Response::formatters|response
]
] application component
.
[
[yii\web\Response::formatters|response
]
]
.
##
Content Negotiation
<a name="content-negotiation"></a>
##
Обсуждение содержимого
<a name="content-negotiation"></a>
Yii
supports content negotiation via the
[
[yii\filters\ContentNegotiator
]
] filter. The RESTful API base
Yii
поддерживает обсуждение содержимого с помощью фильтра
[
yii\filters\ContentNegotiator
]
]. Базовый класс
controller class
[
[yii\rest\Controller
]
] is equipped with this filter under the name of
`contentNegotiator`
.
контроллера RESTful API
[
[yii\rest\Controller
]
] использует этот фильтр под именем
`contentNegotiator`
.
The filer provides response format negotiation as well as language negotiation. For example, if a RESTful
Фильтр обеспечивает соответствие формата ответа и определение языка. Например, если RESTful API запрос
API request contains the following header,
содержит следующий заголовок:
```
```
Accept: application/json; q=1.0, */*; q=0.1
Accept: application/json; q=1.0, */*; q=0.1
```
```
it will get a response in JSON format, like the following
:
Он будет получать ответ в формате JSON следующего вида
:
```
```
$ curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "http://localhost/users"
$ curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "http://localhost/users"
...
@@ -56,15 +55,15 @@ Content-Type: application/json; charset=UTF-8
...
@@ -56,15 +55,15 @@ Content-Type: application/json; charset=UTF-8
]
]
```
```
Behind the scene, before a RESTful API controller action is executed, the
[
[yii\filters\ContentNegotiator
]
]
Под копотом происходит следующее: прежде, чем экшн RESTful API контроллера будет выполнен, фильтр
filter will check the
`Accept`
HTTP header in the request and set the
[
[yii\web\Response::format|response format
]
]
[
[yii\filters\ContentNegotiator
]
] проверит HTTP-заголовок
`Accept`
в запросе и установит, что
to be
`'json'`
. After the action is executed and returns the resulting resource object or collection,
[
[yii\web\Response::format|формат ответа
]
] должен быть в
`'json'`
. После того, как экшн будет выполнен и вернет
[
[yii\rest\Serializer
]
] will convert the result into an array. And finally,
[
[yii\web\JsonResponseFormatter
]
]
результирующий объект ресурса или коллекцию,
[
[yii\rest\Serializer
]
] конвертирует результат в массив.
will serialize the array into a JSON string and include it in the response body
.
И, наконец,
[
[yii\web\JsonResponseFormatter
]
] сериализует массив в строку JSON и включит ее в тело ответа
.
By default, RESTful APIs support both JSON and XML formats. To support a new format, you should configure
По умолчанию, RESTful APIs поддерживает и JSON, и XML форматы. Для того, чтобы добавить поддержку нового формата,
the
[
[yii\filters\ContentNegotiator::formats|formats
]
] property of the
`contentNegotiator`
filter like
вы должны установить свою конфигурацию для свойства
[
[yii\filters\ContentNegotiator::formats|formats
]
] у фильтра
the following in your API controller classes
:
`contentNegotiator`
, похожую на следующие классы контроллеров API
:
```
php
```
php
use
yii\web\Response
;
use
yii\web\Response
;
...
@@ -77,21 +76,21 @@ public function behaviors()
...
@@ -77,21 +76,21 @@ public function behaviors()
}
}
```
```
The keys of the
`formats`
property are the supported MIME types, while the values are the corresponding
Ключи свойства
`formats`
- это поддерживаемые MIME-типы, а их значения должны соответствовать именам
response format names which must be supported in
[
[yii\web\Response::formatters
]
].
форматов ответа, которые установлены в
[
[yii\web\Response::formatters
]
].
##
Data Serializing
<a name="data-serializing"></a>
##
Сериализация данных
<a name="data-serializing"></a>
As we have described above,
[
[yii\rest\Serializer
]
] is the central piece responsible for converting resource
Как уже описано выше,
[
[yii\rest\Serializer
]
] - это центральное место, отвечащее за конвертацию объектов ресурсов
objects or collections into arrays. It recognizes objects implementing
[
[yii\base\ArrayableInterface
]
] as
или коллекций в массивы. Он реализует интерфейсы
[
[yii\base\ArrayableInterface
]
] и
[
[yii\data\DataProviderInterface
]
].
well as
[
[yii\data\DataProviderInterface
]
]. The former is mainly implemented by resource objects, while
[
[yii\base\ArrayableInterface
]
] реализуется для объектов ресурсов, а
[
[yii\data\DataProviderInterface
]
] - для коллекций.
the latter resource collections.
Вы можете переконфигурировать сереализатор с помощью настройки свойства
[
[yii\rest\Controller::serializer
]
], используя
конфигурационный массив. Например, иногда вам может быть нужно помочь упростить разработку на клиенте с помощью
добавления информации о пагинации непосредственно в тело ответа. Чтобы сделать это, переконфигурируйте свойство
[
[yii\rest\Serializer::collectionEnvelope
]
] следующим образом:
You may configure the serializer by setting the
[
[yii\rest\Controller::serializer
]
] property with a configuration array.
For example, sometimes you may want to help simplify the client development work by including pagination information
directly in the response body. To do so, configure the
[
[yii\rest\Serializer::collectionEnvelope
]
] property
as follows:
```php
```php
use yii\rest\ActiveController;
use yii\rest\ActiveController;
...
@@ -106,7 +105,7 @@ class UserController extends ActiveController
...
@@ -106,7 +105,7 @@ class UserController extends ActiveController
}
}
```
```
You may then get the following response for request
`http://localhost/users`
:
Тогда вы можете получить следующий ответ на запрос
`http://localhost/users`
:
```
```
HTTP/1.1 200 OK
HTTP/1.1 200 OK
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment