简介
Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono。它的返回值也是多种多样的,适应各种不同的情况。包括Response.AsFile()、Response.AsRedirect()、 Response.AsImage()、 Response.AsJson()、Response.AsText()、 Response.AsXml()等
一:string
Get["/get"] = parameters => { return "Nancy"; }
二:返回视图,像MVC一样,需要有Views/Home/index.html网页才能成功
Get["/get"] = parameters => { return View["/home/index.html"]; }
三:Response
Post["/GetMore"] = p => { Product pd = new Product(); pd.Id = 10; pd.Address = "北京超越"; pd.Name = "苹果手机"; pd.Price = 1000; return Response.AsJson(pd);
return Response.AsXml(pd);
}
四:Response返回值源码
public static implicit operator Response(HttpStatusCode statusCode) { return new Response { StatusCode = statusCode }; } public static implicit operator Response(int statusCode) { return new Response { StatusCode = (HttpStatusCode)statusCode }; } public static implicit operator Response(string contents) { return new Response { Contents = contents, ContentType = "text/html", StatusCode = HttpStatusCode.OK }; } public static implicit operator string(Response response) { return response.Contents; }
五:Contents源码
public static class FormatterExtensions { public static Response AsJson<TModel>(this IResponseFormatter formatter, TModel model) { return new JsonResponse<TModel>(model); } public static Response AsXml<TModel>(this IResponseFormatter formatter, TModel model) { return new XmlResponse<TModel>(model); } public static Response Image(this IResponseFormatter formatter, string imagePath) { return new ImageResponse(imagePath); } }
public static Action<Stream> Static(this IViewEngine engine, string virtualPath) { return stream => { var path = HostingEnvironment.MapPath(virtualPath); using (var reader = new StreamReader(path)) { using(var writer = new StreamWriter(stream)) { writer.Write(reader.ReadToEnd()); writer.Flush(); } } }; },
六、自定义返回值
Get["/get"] = parameters => { var path = AppDomain.CurrentDomain.BaseDirectory + "/Views/home/index.html"; Response response = new Response(); response.ContentType = "text/html"; response.Contents = stream => { using (var reader = new StreamReader(path)) { using (var writer = new StreamWriter(stream)) { writer.Write(reader.ReadToEnd()); writer.Flush(); } } }; return response; };
参考文章:http://www.cnblogs.com/bnbqian/p/4944829.html