2009-11-16 9 views
4

내 리소스를 여러 언어로 번역하고 싶습니다. REST 아키텍처를 사용하여 여러 언어를 리소스에 게시하는 방법은 무엇입니까?REST 및 현지화 된 리소스

자원 :/챕터/장이/: 지역화 EN과 SK가 생성과

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

새로운 장 : POST가 장을 발행

ID

, 클라이언트 데이터 구조를 보낼 수 있습니다.

클라이언트가 URL/chapter/1에서이 장에 액세스하려고 할 때 하나의 언어 변이 만 표현으로 반환되어야합니다. 로케일 범위 지정은 어떻게 구현해야합니까? Accept-Language HTTP 헤더를 원하는 로케일, Accept-Language : sk 또는 사용할 수 있습니다. 또는/chapters/1/en과 같은 URL에 로케일을 포함 할 수 있습니다.

어떻게 PUT 요청을 처리해야합니까? 대부분의 경우 하나의 언어 변이가 업데이트되지만 때로는 2 개 이상이 업데이트됩니다.

+0

+1 매우 흥미로운 질문 ... –

답변

1

데이터를 업데이트하려면 설명 된대로 언어가 데이터의 페이로드에 제공되어야합니다. 그건 잘된거야.

가져 오기의 경우 1) 연결 가능성을 허용할지, 2) 클라이언트가 선택한 언어를 변경할지 여부에 따라 다릅니다. 나는 당신이 두 가지를 원한다고 주장 할 것입니다. URL을 변경하거나 앱 내에서 언어를 토글 한 다음 브라우저에서 futz하고 브라우저 전체 로켈 설정을 변경하는 것이 훨씬 쉽고 바람직합니다.

그래서 언어, 응용 프로그램 쿠키 또는 응용 프로그램 사용자 데이터에서 해당 언어를 확인하고 Accept-Language 헤더를 사용하십시오.

PUT 요청 질문을 이해할 수 없습니다. 설명하는 데이터 구조는 여러 언어 업데이트를 처리 할 수 ​​있습니다. PUT 인 URL이 주소 지정 가능한 리소스로 남아있는 한 원하는만큼 PUT을 처리 할 수 ​​있습니다.

+0

예, 연결 가능성이 좋지 않습니다. 좋은 점입니다. PUT (이 경우 기존 자원 업데이트)은 현재 상태를 새로운 상태로 완전히 대체하는 것으로 구현되어야합니다. 이는 하나의 PUT 요청으로 모든 언어 변이를 보내는 것을 의미합니다. 대부분의 경우 하나의 언어 변이가 처리를 위해 서버에서 가져옵니다. 나는 각 언어를 subortinate resource :/chapter/1/: 언어로 노출하는 것이 더 낫다고 생각한다. 이 주소 연결성 및 캐싱을 쉽게 만듭니다. 감사. – Peter

+0

네, 그게 효과가 있습니다. PUT/chapter/1을 "과부하 (overload)"하여 질문에 정의한'localizations' 구조를 찾을 수도 있습니다 (어떤 경우에는 중요 할 수있는 1 요청에서 여러 업데이트를 허용합니다). –

관련 문제