すべてのリクエストまたはレスポンスフィルター、またはServiceStackサービス内では、基盤となるHTTPリクエストおよびレスポンスに常にアクセスできます。たとえば、サービスでそれらにアクセスする方法:
public class MyService : Service
{
public object Get(Request request)
{
var scheme = base.Request.IsSecureConnection ? "https" : "http";
base.Response...
}
}
基盤となるHTTPリクエストまたはレスポンスにアクセスする必要がある場合は、いつでも次の方法でアクセスできます。
var aspnetRequest = (HttpRequest) base.Request.OriginalRequest;
var aspnetResponse = (HttpResponse) base.Request.OriginalResponse;
サービスへのURLをプログラムで構築する
ToUrl(method,format)
ServiceStackでは、C#サービスクライアントが使用するのと同じ組み込みおよびToAbsoluteUrl(method,format)
拡張メソッドを使用して、サービスの相対URLまたは絶対URLを作成できます。
[Route("/customers")]
[Route("/customers/{Id}")]
public class Customers : IReturn<List<Customer>>
{
public int? Id { get; set; }
}
上記のリクエストDTOと定義されたルートを前提として、次のURLを作成できます。これらのURLは、最も関連性の高いURLを使用してURLを作成します。例:
var relativeUrl = new Customers().ToUrl(); // /customers
var absoluteUrl = new Customers().ToAbsoluteUri(); // http://host/api/customers
// /customers/1
var relativeIdUrl = new Customers { Id = 1 }.ToUrl();
// http://host/api/customers/1
var absoluteIdUrl = new Customers { Id = 1 }.ToAbsoluteUri();