Nancy 返回值详解

原文: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 = 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

原文地址:https://www.cnblogs.com/lonelyxmas/p/9067958.html

时间: 2024-11-06 21:47:27

Nancy 返回值详解的相关文章

C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,其中很常用的一个是realloc(). 由字面意思可以知道,该函数的作用是用于重新分配内存. 使用方式如下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 其中OldPtr指向 待重新分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及以下几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自动释放 3.OldPtr和NewPtr分别是什么内容,他们有什么关

HibernateTemplate的find(String querystring)返回值详解

项目源码中出现如下代码: HibernateTemplate ht =-- List<Object[]> tempList = ht.find(String querystring); 查看api发现HibernateTemplate的find(String querystring)方法返回的是一个List<Object>对象,当时就比较纳闷了,难道Object对象能强转为Object数组?当然不能.那是为什么呢?find方法返回的list本质上就是List<Object[]

(一)Python入门-5函数:02形参和实参-文档字符串-函数注释-返回值详解

一:形参和实参 [操作]定义一个函数,实现两个数的比较,并返回较大的值. 1 def printMax(a,b): 2 '''实现两个数的比较,并返回最大值!''' 3 if a >b: 4 print(a,'较大值') 5 else: 6 print(b, '较大值') 7 8 printMax(20,30) 9 printMax(30,5) 10 11 #测试文档字符串的使用 12 help(printMax) 13 help(printMax.__doc__) 上面的 printMax 函

用PHP上传文件时$_FILES中error返回值详解

用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常.$_FILES[fieldName] ['error']==0代表一切正常,其它数值的具体含义请参考下面一段程序的注释部分,如有翻译不到之处还望指正! switch($_FILES[$field]['error']) { case 1:            // 文件大小超出了服务器的空间大小            $th

HTTP 返回状态值详解

当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下: 1.Http/1.1 200 OK 访问正常  表示成功访问,为网站可正常访问时的状态. 2.Http/1.1 301 Moved Permanently 301重定向永久重定向  对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名权重可传递到新域名,也常有将不含www的域名301跳转到含www的,如xxx.com通过301跳转到www

pointer-events属性值详解

其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样的话,这些浮在上面的div或者其它元素一般都会给个宽高,或者relative的元素可以不给宽高,这个时候,这些元素就会盖住下面的地图层,以至于地图层无法操作... 然后正好在Google map见到了类似的问题,拿来当例子来

python函数定义与使用+返回值简解

一个函数相当于一个功能块,当要使用时,可以直接调用,避免了垒代码. 函数定义和使用: 1 #函数 2 def mail(): #定义函数 3 n = 123 #函数体 4 n += 1 5 print(n) 6 mail() #加括号表示执行函数 7 f = mail #函数名,赋值结果一样 8 f() 9 10 #执行结果: 11 124 12 124 def:表示函数的关键字(解析器解析到def,识别为定义函数,默认不执行) 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系

HTTP返回状态值详解

当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下: 1.Http/1.1 200 OK 访问正常 表示成功访问,为网站可正常访问时的状态. 2.Http/1.1 301 Moved Permanently 301重定向永久重定向 对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名权重可传递到新域名,也常有将不含www的域名301跳转到含www的,如xxx.com通过301跳转到www.x

C# WebApi之接口返回类型详解

转自:https://www.cnblogs.com/hnsongbiao/p/9375888.html Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 void无返回值 大家都知道void声明的是一个无返回值的方法,声明一个api控制器方法,例如: public class ValuesController : ApiController { [HttpGet] public void Get()