はい、同じWebサービスを指す複数のRESTフルパスを持つことができます。
パスをそのままにしておきたい場合は、HttpRequestを介してサービスを呼び出すために使用されるリクエストパスを調べることができます。
var httpReq = base.RequestContext.Get<IHttpRequest>();
httpReq.PathInfo //or httpReq.RawUrl, httpReq.AbsoluteUri, etc.
リクエストのタイプを判断する方法は、入力されたリクエストDTOを確認することですが、 /research/と/popular/を区別するには、別のリクエストDTOプロパティに保存してから、その値を調べる必要があります。
[RestService("/items/{Type}")]
[RestService("/items/{Type}/{Page}")]
public class Items
{
public string Type { get; set; }
public int? Page { get; set; }
}
public class ItemsService : ServiceBase<Items>
{
public override object Run(Items request)
{
if (request.Type == "recent")
if (!request.Page.HasValue)
//path 1
else
//path 2
else if (request.Type == "popular")
if (!request.Page.HasValue)
//path 3
else
//path 4
}
}
これもこのStackOverflowの質問に似ています:
servicestackの実装に関するヘルプが必要です