かなり限られたOpenRastaの経験では、.AndUriリソースロケーションを追加するために.Andメソッドを使用できます。
I.e.お使いの場合には{カーリーブラケットは}あなたのハンドラメソッド、すなわちの入力パラメータを指定
ResourceSpace.Has
.ResourcesOfType<Request>()
.AtUri("/processing").And.AtUri("/processing/{processid}")
.HandledBy<SomeHandler>()
.TranscodedBy<SomeCodec>();
:
public class SomeHandler
{
public Request Get(int processid = 0) //specify a default value for the uri case /processed
{
if (processid == 0)
return Context.Set<Request>().ToList(); //Context comes from my DbContext derived class which is part of my entity model.
else
return GetRequestFromProcessId(processid) //this is a private method in your handler class using Linq to SQL to retreive the data your interested in. I can't see your handler so I'm making it up.
}
}
私はOpenRastaのドキュメントで、あなたが(だけdestinctを持たなければならないことをspecifedノートを見つけました1つ)対応するそれぞれのタイプとハンドラのResourceSpace定義。言い換えれば、同じResourceOfTypeクラスを同じHandledByハンドラクラスで複製してはいけません。私はこれをテストしました。それが事実であり、おそらく最初に質問をしている理由です。
N.b.このコードは完全にテストされていません。私はあなたのクラスとuriに書いて置き換えたもののpaternを取得しました。これは、HTTP GET verbからデータを取得しようとしていることを前提としています。他の寄稿者は、POSTルートを降りましたが、あなたは指定していません。
OpenRastaフレームワークがこれを強制しても試していないが、複数のリソースに対して登録されたURIを1つ持つことは、確かにRESTアーキテクチャスタイルに違反している。リソースは多くのURI(アドレス)を持つことができますが、URIは**単一のリソースに**対処するだけです。 –
@SixtoSaez:私はあなたの意見を理解していますが、あなたのリソースをどのように見ているかだけの見解ではないと思いませんか。私はすべてが「要求」タイプであるという視点を持っています。 。 –
リソースのさまざまな "ビュー"を表現したい場合は、OpenRastaの異なるコーデックを使います。 RESTでは、特定のリソースを表すために異なるメディアタイプ(コーデック)を使用できますが、アドレスは特定のリソースのみを識別する必要があります。 –