Domanda

Come genererei un URL a un servizio specifico definito in ServiceStack?

Voglio includere URL completi o relativi ad altri endpoint come parte della risposta DTO.RestServiceBase contiene RequestContext.AbsoluteUri, ma è interamente dipendente dalla richiesta.

È stato utile?

Soluzione

Invert Routing

the Reverse routing sezione nel wiki mostra come usare l'estensione Metodi su una richiesta Popalated DTO DTO per generare uri relativi e assoluti:

Se si utilizzano attributi di metadati [Route] (al contrario dell'API fluente) sarai in grado di generare URI a digitato forte utilizzando solo il DTO, consentendo di creare URL al di fuori del ServiceDack Web Framework come con i clienti .NET. ToUrl(HttpMethod) e ToAbsoluteUri(HttpMethod), ad esempio:

[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
.

I contatti E-mail Demo mostra un esempio di utilizzo dei metodi di estensione di routing inverso sopra da Popolare percorsi per moduli HTML e collegamenti nelle viste del rasoio .

Altri metodi di estensione di routing inverso
new RequestDto().ToPostUrl();
new RequestDto().ToPutUrl();
new RequestDto().ToDeleteUrl();
new RequestDto().ToOneWayUrl();
new RequestDto().ToReplyUrl();
.

Accesso alla richiesta HTTP

È inoltre possibile ispezionare il httprequest di sottostanti in entrata con:

var httpReq = base.RequestContext.Get<IHttpRequest>();
.

Nonché l'oggetto di richiesta ASP.NET (o HTTPListener) sottostante con:

var aspNetReq = httpReq.OriginalRequest;
.

Dovrebbero contenere ulteriori proprietà che dovrebbero essere più utili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top