Nancy 返回值详解

简介

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 = ;
pd.Address = "北京超越";
pd.Name = "苹果手机";
pd.Price = ;
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

上一篇:【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-2 工程及程序构架介绍


下一篇:git 代码分支合并merge提交新修改远程以及本地分支