Как мне организовать мой многоязычный REST API?

Я только начал создавать многоязычный REST API и не уверен, следует ли придерживаться какого-либо соглашения о том, как правильно интегрировать многоязычие.

Ниже приведен список альтернатив, которые я придумал, не зная, какой из них имеет смысл.

Опция 1:
Языковая переменная в URI: http://myapi.com/en/users/john

Вариант 2:
Возврат только кодов ошибок для клиентской стороны перевода: GET http://myapi.com/users/john => HTTP 404 {status: false, error_code: "321"}

Вариант 3:
Возврат на всех доступных языках: GET http://myapi.com/users/john => {status: false, error_en: "User not found", error_sv: "Anvandaren finns inte"}

1 ответ

Решение

Для согласования содержимого, как для согласования естественного языка представления, HTTP предоставляет заголовок запросаAccept-Language:

Accept-Language: da, en-gb;q=0.8, en;q=0.7

Если возможно, сервер отвечает на этот запрос с заголовком ответаContent-Language:

Content-Language: da

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

Другие вопросы по тегам