我可能會打魔鬼在這裏提倡,但我可以看到爲什麼有人想要做這樣的事情。
在同一個URL上有一個API的HTML表示通常很不錯。這種方法允許用戶在瀏覽器中點擊並瀏覽API。
我已經在WebAPI中通過使用自定義消息處理程序302重定向到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);
}
}
}
位,但它的工作,我個人很喜歡它比自定義的HTML MediaTypeFormatter(我也嘗試過);)
確切地說,保持它們是單獨的項目 – RickAndMSFT 2012-03-30 16:36:03
@ Rick.Anderson-at-Microsoft.com,我不是說你應該將它們放在單獨的項目中,這取決於api和站點的大小。如果它是一個小應用程序,我認爲你可以在同一個項目中同時擁有API和站點,並且只要有可能就把api放在一個區域中就可以分開它們。 – 2012-03-31 14:16:45