2016-12-19 5 views
0

を切り離す維持しながら、データを表現する方法上のクライアントを暗示する方法、我々はそうのようにユーザーの個人情報を格納しているとしましょう(ここではJSONが、それはポイントではありません):RESTサービスは、 - 簡単にするため

{ 
    "name": "John" 
    "age": 35 
    "sex": "M" 
} 

これらの情報を表示したり、新しいユーザーを作成したり、既存のユーザーを更新したりするために、フォームを作成するUIクライアントが必要です。

だから、私の質問は:

これは、RESTfulな方法で実現することができますか? RESTは、提供されるリソースをどのように表示するかについてのヒントクライアントのようなタイプの対話を提供しますか?

私たちは、クライアントにリソースをどのように表現するかに最大限の自由度を与えたいだろうが、また、彼らはバックエンドとフロントエンドの間にあまりにも多くのカップリングせずに正しいデータをご返送を支援します。たとえば、私たちは同じようuser用のテンプレートを持っている可能性が

{ 
    "self": "/template/user" 
    "method": "GET" 
    "data": { 
     "fields": [ 
       { 
        "name": "name" 
        "value": { 
         "data_type": "string"      
        } 
       }, 
       { 
        "name": "age" 
        "value": { 
         "data_type": "number"      
        } 
       }, 
       { 
        "name": "sex" 
        "value": { 
         "data_type": "string" 
         "options": [ 
          "M", 
          "F" 
         ] 

        } 
       } 
     ] 
    } 
} 

は、あなたが提供することができるかもしれない任意の入力いただき、ありがとうございます。これは、RESTfulな方法で達成することができますどのように

+0

サンプルにJSONが含まれているので、実際の有効な入力または期待されるフィールドを記述するために[json-schema](http://json-schema.org/)をご覧ください。 XMLベースのメッセージの場合、XSD(またはDTD)を使用して、クライアントに送信する予定の内容を教えることができます。他のドキュメントタイプでは、クライアントを教える方法やサポートする方法がはっきりしません。クライアントは、デフォルトのメディアタイプ(つまり、アプリケーション/ json)でこれらの機能をサポートできる特別なメディアタイプが必要な場合があります。 –

+0

私の以前のコメントは、 "teachクライアントが何を返すべきか」と心配し、ビューのサポートを少なくすると、私のコメントは私が推測するほどあなたを助けなかったかもしれません。 APIまたはサーバーがクライアントにフォームの提示方法をヒントする際に役立つ場合、特定のHTML出力(フォームを含む)をサーバーからクライアントに送信してみませんか?クライアントがブラウザ(またはブラウザ対応コンポーネント)である場合、フォームを提示することは応答の単なるレンダリングに過ぎません。クライアントはコンテンツネゴシエーション( 'text/html')を介してヘルプをリクエストすることも、独自のもの(' application/json')を行うこともできます –

+0

ありがとう、@voiceofunreasonに対する私のコメントを参照してください。 HTMLを送信します。 – Johnny

答えて

0

? RESTは、提供されるリソースをどのように表示するかについてのヒントクライアントのようなタイプの対話を提供しますか?

RESTのためのリファレンスアプリケーションは、ワールドワイドウェブです。どうやってそれをやったの?

1)私たちは、クライアントの裁量で、我々は補助的なリソースへのリンクを備えたエンジン

2)をレンダリングするクライアントの選択によって解釈される可能性バンドプレゼンテーション命令でサポートされているメディアタイプ(HTML)を(使用しましたCSS)を使用して、レンダリングエンジンに追加のプレゼンテーションヒントを提供することができます。レンダリングエンジン(ブラウザ)は、サーバから独立して開発することができるように、これはテキスト/ htmlとテキスト/ cssのが明確に定義されている(標準化)に依存すること

は注意してください。

クライアントとのレンダリング手順を共有するための標準として、HTMLの代替手段はありませんでした。最初のアプローチとしての私の提案は、データ表現をクライアントがレンダリングを理解するために使用できるhtml表現にリンクすることです。

+0

あなたと@RomanVottnerの両方がHTMLを送信するように提案しています。なぜ私は完全に理解している間、私はクライアントに最大の自由を与えたいと思ったので、これをまったく避けようとしていました。例えば、 'options'は選択ドロップダウンやラジオボタンとしてレンダリングされます。私がクライアントにある表現を他の表現に向けるよう強制すると、私はそれを最終的に制限します。 – Johnny

関連する問題