質問
ServiceStackで定義されている特定のサービスにURLを生成する方法は?
応答DTOの一部として、他のエンドポイントにフルまたは相対URLを含めたい。RestServiceBase
はRequestContext.AbsoluteUri
を含みますが、それは要求に完全に依存しています。
解決
Wikiの逆ルーティングセクション拡張機能の使い方を示しています相対的および絶対的なURIを生成するために、要求DTO の方法:
Fruent APIとは対照的に、[Route]
メタデータ属性を使用する場合は、DTOのみを使用して強い型式のURIを生成することができます。 ToUrl(HttpMethod)
とToAbsoluteUri(HttpMethod)
、例えば:
[Route("/reqstars/search", "GET")]
[Route("/reqstars/aged/{Age}")]
public class SearchReqstars : IReturn<ReqstarsResponse>
{
public int? Age { get; set; }
}
var relativeUrl = new SearchReqstars { Age = 20 }.ToGetUrl();
var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();
relativeUrl.Print(); //= /reqstars/aged/20
absoluteUrl.Print(); //= http://www.myhost.com/reqstars/aged/20
.
電子メール連絡先デモ< Razor Views のHTMLフォームとリンクのルートを作成します。
その他のリバースルーティング拡張方法
new RequestDto().ToPostUrl();
new RequestDto().ToPutUrl();
new RequestDto().ToDeleteUrl();
new RequestDto().ToOneWayUrl();
new RequestDto().ToReplyUrl();
.
HTTPリクエストへのアクセス
で件の歴史の基礎となる情報を検査することもできます。
var httpReq = base.RequestContext.Get<IHttpRequest>();
.
および基礎となるASP.NET(またはHTTPLISTENER)リクエストオブジェクト:
var aspNetReq = httpReq.OriginalRequest;
.
それらはより有用であるべき追加のプロパティを含めるべきです。
[Route]
メタデータ属性を使用する場合は、DTOのみを使用して強い型式のURIを生成することができます。 ToUrl(HttpMethod)
とToAbsoluteUri(HttpMethod)
、例えば:
[Route("/reqstars/search", "GET")]
[Route("/reqstars/aged/{Age}")]
public class SearchReqstars : IReturn<ReqstarsResponse>
{
public int? Age { get; set; }
}
var relativeUrl = new SearchReqstars { Age = 20 }.ToGetUrl();
var absoluteUrl = new SearchReqstars { Age = 20 }.ToAbsoluteUri();
relativeUrl.Print(); //= /reqstars/aged/20
absoluteUrl.Print(); //= http://www.myhost.com/reqstars/aged/20
new RequestDto().ToPostUrl();
new RequestDto().ToPutUrl();
new RequestDto().ToDeleteUrl();
new RequestDto().ToOneWayUrl();
new RequestDto().ToReplyUrl();
.
HTTPリクエストへのアクセス
で件の歴史の基礎となる情報を検査することもできます。
var httpReq = base.RequestContext.Get<IHttpRequest>();
.
および基礎となるASP.NET(またはHTTPLISTENER)リクエストオブジェクト:
var aspNetReq = httpReq.OriginalRequest;
.
それらはより有用であるべき追加のプロパティを含めるべきです。
所属していません StackOverflow