2011-12-03 11 views
7

RESTfulなパラダイムから離れることなく、オブジェクトの検証をRESTfulな方法でモデル化するにはどうすればよいですか?オブジェクトを検証するためのRESTful URLの設計方法

バックエンドのRESTfulサービスを呼び出すシステムがあるとします。ユーザーが登録フォームにアクセスしてそれを送信したとすると、Webレイヤーは検証されていないデータをバックエンドサービスに直接送信し、サービスがJSON形式の検証エラーで応答した場合、HTMLとしてユーザーに返します。

ただし、フォームにAJAX動作を適用したいとします。たとえば、ユーザーが電子メールアドレスを入力し、電子メールアドレスがすでに登録されている場合は、ユーザーにエラーを送信してAJAXを使用して検証します。

電子メールアドレスだけを検証するために1回の呼び出しを実装したり、バックエンドサービスでオブジェクト全体を送信して検証することは可能でしょうか?後者の場合、実際にオブジェクトを作成するのではなく、オブジェクトを検証するためにどのURLを使用できますか?

答えて

0

単一のフォームフィールドを検証すると、ユーザーがフォームに入力している間にユーザーエクスペリエンスが向上する可能性がありますが、フォームが送信されるとエラーが発生しにくいため、オブジェクト全体が検証されます。 URLは単純にhttps://mysite.com/users/emailvalidatorで電子メールのみ(1つのフィールド)を検証することができ、フォームはhttps://mysite.com/users(オブジェクト全体)にPOSTすることができます。前者の場合、URLは、使用するリソースが電子メールを検証できるオブジェクトであることを明確に示しています。私はあなたが示唆されているものを行うには、サンドボックスサブリソースの概念を使用していた過去に

+0

私は、バックエンドサービスへのREST呼び出しの詳細について考えていました。実際にユーザーを登録する呼び出しが/ usersへのPOSTであったとしたら、基本的に同じ呼び出しを行うことはできますが、検証するだけですか? – DrewEaster

+0

これを読んで:http://restfulobjects.files.wordpress.com/2011/11/restful-objects-spec-052.pdf。サーバーが実際に突き合わせるだけで検証するように指示するために、クエリパラメータ "x-ro-validate-only = true"を送信する方法について説明します。 – DrewEaster

+0

"emailvalidator"リソースは "users"リソースの一部であるため、上記の階層URLを使用します。論理的な視点から見ると、「ユーザー」はユーザーデータを格納するコンテナであり、新しいデータが挿入される前に検証されます。論理視点からも、オブジェクト "emailvalidator"はこの検証プロセスの一部であり、独自のURLを使用して直接呼び出すことができる特別な部分です。 (階層的なURLの設計についてのこの質問を参照してください:http://stackoverflow.com/questions/7833548/hierarchical-restful-url-design) – kol

2

http://example.com/customer/23/sandbox 

これは私がデルタを投稿し、変更が適用され、検証持つことができますが、実際にはコミットされません。これは、従来の「保存/キャンセル」タイプのダイアログではうまく機能します。

しかし、私はこれらのデルタを扱うのが本当に苦痛であることを発見しました。クライアントで一連のイベントを記録し、そのドキュメントをサンドボックスリソースに投稿した別のメディアタイプを開発しました。一連のイベントを再生することで、サーバー側のリソースを簡単に更新して検証することができました。

後で、私は本当に別個の "サンドボックス"リソースが不要であることに気がつきましたが、今は "イベントのシーケンス"ドキュメントを影響を与えるリソースに直接ポストするだけです。ドキュメント自体に、変更が永続的なものか一時的なものかを判断するデータがあります。ユーザーが保存ボタンをまだ押したかどうかによって異なります。

+0

"一連のイベント"ドキュメントの外観は?リソースに直接 'POST 'することは可能ですか? – mjs

+0

@mjsはい、リソースに直接投稿することができます。それは実際に私が今やっていることです。私はサンドボックスのサブリソースを落としました。私はここでコンセプトについて語っている短いビデオをhttp://vimeo.com/15564107で公開しており、今後数ヶ月にメディアタイプの仕様とパーサを投稿するつもりです。 –

関連する問題