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
ede4d8ee
Commit
ede4d8ee
authored
Aug 31, 2014
by
Dmitry Korolev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
small translation fixes
parent
abbdf10c
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
13 deletions
+14
-13
rest-response-formatting.md
docs/guide-ru/rest-response-formatting.md
+14
-13
No files found.
docs/guide-ru/rest-response-formatting.md
View file @
ede4d8ee
...
@@ -4,26 +4,26 @@
...
@@ -4,26 +4,26 @@
При обработке RESTful API запросов приложение обычно выполняет следующие шаги, связанные с форматированием ответа:
При обработке RESTful API запросов приложение обычно выполняет следующие шаги, связанные с форматированием ответа:
1.
Определяет различные факторы, которые могут повлиять на формат ответа, такие как media type, язык, версия и т.д.
1.
Определяет различные факторы, которые могут повлиять на формат ответа, такие как media type, язык, версия и т.д.
Этот процесс также известен как
[
обсужде
ние содержимого
](
http://en.wikipedia.org/wiki/Content_negotiation
)
.
Этот процесс также известен как
[
согласова
ние содержимого
](
http://en.wikipedia.org/wiki/Content_negotiation
)
.
2.
Конвертирует объекты ресурсов в массивы, как описано в секции
[
Ресурсы
](
rest-resources.md
)
.
2.
Конвертирует объекты ресурсов в массивы, как описано в секции
[
Ресурсы
](
rest-resources.md
)
.
Это задача для
[
[yii\rest\Serializer
]
].
Это задача для
[
[yii\rest\Serializer
]
].
3.
Конвертирует массивы в строке в формате, определенном на этапе
обсуждения
содержимого. Это задача для
3.
Конвертирует массивы в строке в формате, определенном на этапе
согласование
содержимого. Это задача для
[
[yii\web\ResponseFormatterInterface|форматера ответов
]
], регистрируемого с помощью компонента приложения
[
[yii\web\ResponseFormatterInterface|форматера ответов
]
], регистрируемого с помощью компонента приложения
[
[yii\web\Response::formatters|response
]
].
[
[yii\web\Response::formatters|response
]
].
##
Обсужде
ние содержимого <a name="content-negotiation"></a>
##
Согласова
ние содержимого <a name="content-negotiation"></a>
Yii поддерживает
обсужде
ние содержимого с помощью фильтра
[
yii\filters\ContentNegotiator
]
]. Базовый класс
Yii поддерживает
согласова
ние содержимого с помощью фильтра
[
yii\filters\ContentNegotiator
]
]. Базовый класс
контроллера RESTful API
[
[yii\rest\Controller
]
] использует этот фильтр под именем
`contentNegotiator`
.
контроллера RESTful API
[
[yii\rest\Controller
]
] использует этот фильтр под именем
`contentNegotiator`
.
Фильтр обеспечивает соответствие формата ответа и определ
ение языка
. Например, если RESTful API запрос
Фильтр обеспечивает соответствие формата ответа и определ
яет используемый язык
. Например, если RESTful API запрос
содержит следующий заголовок:
содержит следующий заголовок:
```
```
Accept: application/json; q=1.0, */*; q=0.1
Accept: application/json; q=1.0, */*; q=0.1
```
```
Он будет получать ответ в
формате JSON
следующего вида:
Он будет получать ответ в
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"
...
@@ -59,11 +59,11 @@ Content-Type: application/json; charset=UTF-8
...
@@ -59,11 +59,11 @@ Content-Type: application/json; charset=UTF-8
[
[yii\filters\ContentNegotiator
]
] проверит HTTP-заголовок
`Accept`
в запросе и установит, что
[
[yii\filters\ContentNegotiator
]
] проверит HTTP-заголовок
`Accept`
в запросе и установит, что
[
[yii\web\Response::format|формат ответа
]
] должен быть в
`'json'`
. После того, как экшн будет выполнен и вернет
[
[yii\web\Response::format|формат ответа
]
] должен быть в
`'json'`
. После того, как экшн будет выполнен и вернет
результирующий объект ресурса или коллекцию,
[
[yii\rest\Serializer
]
] конвертирует результат в массив.
результирующий объект ресурса или коллекцию,
[
[yii\rest\Serializer
]
] конвертирует результат в массив.
И, наконец,
[
[yii\web\JsonResponseFormatter
]
] сериализует массив в строку JSON и включит ее в тело ответа.
И, наконец,
[
[yii\web\JsonResponseFormatter
]
] сериализует массив в строку
в формате
JSON и включит ее в тело ответа.
По умолчанию, RESTful APIs поддерживает и JSON, и XML форматы. Для того, чтобы добавить поддержку нового формата,
По умолчанию, RESTful APIs поддерживает и JSON, и XML форматы. Для того, чтобы добавить поддержку нового формата,
вы должны установить свою конфигурацию для свойства
[
[yii\filters\ContentNegotiator::formats|formats
]
] у фильтра
вы должны установить свою конфигурацию для свойства
[
[yii\filters\ContentNegotiator::formats|formats
]
] у фильтра
`contentNegotiator`
,
похожую на следующие классы контроллеров API
:
`contentNegotiator`
,
например, с использованием поведения такого вида
:
```
php
```
php
use
yii\web\Response
;
use
yii\web\Response
;
...
@@ -84,12 +84,13 @@ public function behaviors()
...
@@ -84,12 +84,13 @@ public function behaviors()
Как уже описано выше,
[
[yii\rest\Serializer
]
] - это центральное место, отвечащее за конвертацию объектов ресурсов
Как уже описано выше,
[
[yii\rest\Serializer
]
] - это центральное место, отвечащее за конвертацию объектов ресурсов
или коллекций в массивы. Он реализует интерфейсы
[
[yii\base\ArrayableInterface
]
] и
[
[yii\data\DataProviderInterface
]
].
или коллекций в массивы. Он реализует интерфейсы
[
[yii\base\ArrayableInterface
]
] и
[
[yii\data\DataProviderInterface
]
].
[
[yii\base\ArrayableInterface
]
] реализуется для объектов ресурсов, а
[
[yii\data\DataProviderInterface
]
] - для коллекций.
Для объектов ресурсов как правило реализуется интерфейс
[
[yii\base\ArrayableInterface
]
], а для коллекций -
[
[yii\data\DataProviderInterface
]
].
Вы можете переконфигурировать сер
е
ализатор с помощью настройки свойства
[
[yii\rest\Controller::serializer
]
], используя
Вы можете переконфигурировать сер
и
ализатор с помощью настройки свойства
[
[yii\rest\Controller::serializer
]
], используя
конфигурационный массив. Например, иногда вам может быть нужно помочь упростить разработку
на клиенте с помощью
конфигурационный массив. Например, иногда вам может быть нужно помочь упростить разработку
клиентской части
добавления информации о пагинации непосредственно в тело ответа. Чтобы сделать это, переконфигурируйте свойство
приложения с помощью добавления информации о пагинации непосредственно в тело ответа. Чтобы сделать это,
[
[yii\rest\Serializer::collectionEnvelope
]
] следующим образом:
переконфигурируйте свойство
[
[yii\rest\Serializer::collectionEnvelope
]
] следующим образом:
```php
```php
...
...
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