質問

ServiceStackで定義されている特定のサービスにURLを生成する方法は?

応答DTOの一部として、他のエンドポイントにフルまたは相対URLを含めたい。RestServiceBaseRequestContext.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;
.

それらはより有用であるべき追加のプロパティを含めるべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top