que pueden estar jugando los diablos defienden aquí, pero puedo ver el punto por el cual alguien querría hacer algo como esto.
A menudo es bueno tener una representación HTML de una API en la misma URL. Este enfoque permite a los usuarios hacer clic y explorar una API desde el navegador.
He conseguido esto en la WebAPI utilizando un controlador de mensajes personalizado que 302 redirige a una ruta MVC.
public class HtmlMessageHandler : DelegatingHandler
{
private List<string> contentTypes = new List<string> { "text/html", "application/html", "application/xhtml+xml" };
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Get && request.Headers.Accept.Any(h => contentTypes.Contains(h.ToString())))
{
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Redirect);
var htmlUri = new Uri(String.Format("{0}/html",request.RequestUri.AbsoluteUri));
response.Headers.Location = htmlUri;
return Task.Factory.StartNew<HttpResponseMessage>(()=> response);
}
else
{
return base.SendAsync(request, cancellationToken);
}
}
}
poco de un truco quizá pero tiene el trabajo y personalmente me gusta más que una costumbre HTML MediaTypeFormatter (que también he intentado);)
exactamente, guárdelos en proyectos separados – RickAndMSFT
@ Rick.Anderson-at-Microsoft.com, no digo que deba mantenerlos en proyectos separados, eso depende del tamaño de la API y del sitio. Si se trata de una aplicación pequeña, creo que puede tener la API y el sitio en el mismo proyecto y simplemente separarlos teniendo la API en un área si es posible. –