2017-07-17 1 views
0

私は現在、開発者がヘッダーを通じて特定の言語を呼び出してリクエストできるAPIを構築しています。しかし、私は管理者用のAPIクライアント(CMSと同じようなもの)も開発しています。Rest APIコンテンツの言語ネゴシエーション

このクライアントでは、使用可能なすべてのロケールを1回の呼び出しで返すことができます。

したがって、たとえば、APIのパブリックコール(language=en)は、次を返します:

{ 
    name: 'Steve', 
    description: 'My english description', 
    url: 'http://example.com' 
} 

しかし、私はまた、すべてのロケールのためのデータを取得するために多言語の電話をかけることができるだろう:

{ 
    name: 'Steve', 
    locales: { 
     en: { 
      description: 'My english description', 
      url: 'http://example.com' 
     }, 
     fr: { 
      description: 'Ma description en français', 
      url: 'http://example.com/fr' 
     } 
    } 
} 

これを達成するためのREST標準はありますか?2つのAPIリクエストを作成する必要はありませんか?

答えて

0

私は、すべての言語のすべてのバージョンを取得するためにAccept-Languageenとして設定ヘッダーと

GET /multilang/users/steve 

[ 
    { 
      "lang": "en", 
      "content": { 
       "name": "Steve", 
       "description": "My english description", 
       "url": "http://example.com" 
      } 
    }, 
    { 
      "lang": "fr", 
      "content": { 
       ... 
      } 
    } 
] 

GET /users/steve 

{ 
    "name": "Steve", 
    "description": "My english description", 
    "url": "http://example.com" 
} 

のようなものをお勧めします。このソリューションの大きな利点は、リソースの元の構造を保持することです(元のリソースをmultilangリソースにネストするだけです)。langヘッダに応じて構造が変更されません。構造xを得るためには乱雑で矛盾します。言語ヘッダ、および構造体yを、同じリソース上のヘッダなしで使用できます。

その他のインスピレーションthereがあります。

関連する問題