2009-11-16 4 views
4

Я бы хотел, чтобы мои ресурсы были локализованы на нескольких языках. Как несколько языков должны быть отправлены на ресурс с использованием архитектуры REST?REST и локализованные ресурсы

ресурс:/главы,/главы /: идентификатор

Когда POST выдается на главы, клиент посылает структуру данных:

{localizations: { en: {title: 'New chapter' },sk: {title: 'Nova kapitola'} }}

и новую главу с локализациями еп и ск создается.

Когда клиент хочет получить доступ к этой главе по URL/главе/1, в представлении должна быть возвращена только одна языковая мутация. Как я должен обладать областью определения языка? Я могу использовать HTTP-заголовок Accept-Language с желаемым языком, Accept-Language: sk или я могу включить locale в URL-адрес, например/chapters/1/en.

Также, как обрабатывать запрос PUT? В течение большей части времени обновлялась только одна языковая мутация, но изредка было обновлено 2 или более из них.

+0

+1 очень интересный вопрос ... –

ответ

1

Для обновления данных язык должен быть указан в полезной нагрузке данных, как вы описали. Это отлично работает.

Для извлечения, это зависит от того, хотите ли вы разрешить 1) связывание, и 2) клиенты, чтобы изменить выбранный язык. Я бы сказал, что вы хотите и того, и другого - гораздо проще и предпочтительнее изменить URL-адрес или переключить язык в своем приложении, а затем зайти в браузере и изменить настройки локали браузера.

Итак, проверьте свой URL-адрес, файлы cookie приложений или пользовательские данные приложения для данного языка и используйте заголовки Accept-Language в качестве резервной копии.

Я не понимаю ваш вопрос запроса PUT. Структура данных, которую вы описываете, будет обрабатывать несколько языковых обновлений просто отлично, нет? Вы можете обрабатывать PUT в значительной степени, как хотите, до тех пор, пока URL-адрес, который является PUT, остается адресуемым ресурсом.

+0

Да, связывание является imortant, хорошая точка. PUT, в данном случае обновление существующего ресурса, должно быть реализовано как замена текущего состояния на новое состояние полностью, это означает отправку всех языковых мутаций с одним запросом PUT. Формировать большую часть времени, только одна мутация языка будет извлечена из сервера для обработки. Я думаю, что лучше разоблачить каждый язык как ресурс субортинта:/chapter/1 /: language. Это связывание адресов, а также упрощает кэширование. Благодарю. – Peter

+0

Да, это сработает. Вы также можете «перегрузить» PUT/chapter/1, чтобы найти структуру «локализации», которую вы определяете в своем вопросе (чтобы разрешить несколько обновлений в 1 запросе, что может быть важно в некоторых ситуациях). –