Nancy 返回值详解

简介: 原文:Nancy 返回值详解简介 Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono。它的返回值也是多种多样的,适应各种不同的情况。包括Response.
原文: 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

目录
相关文章
|
11月前
微信封号脚本插件,全自动批量投诉工具, vx隔空抓包封号思路【仅供学习参考用途】
这是一款针对微信投诉自动化处理的工具插件,通过模拟点击操作实现批量投诉功能。相比手动投诉,该插件效率更高、成功率更有保障。
|
边缘计算 安全 数据安全/隐私保护
一个pcdn产品体验
闲置宽带还能赚钱?听起来是不是很神奇?作为一名普通打工人,我最近入手了负三云这个“小盒子”,体验后直呼真香!只需将其连接路由器,就能利用闲置带宽获取收益。我家100M宽带,每天稳定收入5-8元,一个月轻松赚200+,完全覆盖网费。安装简单、不影响网速,功耗低且安全可靠。如果你也想尝试边缘计算,低成本的负三云绝对值得一试!
4682 0
|
XML 缓存 Java
gradle简介与windows安装操作
gradle简介与windows安装操作
1494 2
|
域名解析 网络协议 Linux
Linux系统下DNS配置指南
Linux系统下DNS配置指南
3919 1
|
数据库 OceanBase
OceanBase,端口号 2881
OceanBase,端口号 2881
802 1
|
Kubernetes 前端开发 持续交付
前端容器化:将应用部署到Docker和Kubernetes
前端容器化是一种将前端应用程序打包成容器的技术,使其可以在不同的环境中快速、高效地部署和运行。本文将详细介绍如何将前端应用部署到Docker容器和Kubernetes集群,实现可伸缩、稳定的应用部署。
2128 0
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问
1957 0
|
Linux
Linux驱动开发——并发和竞态(信号量方式的使用④)
Linux驱动开发——并发和竞态(信号量方式的使用④)
347 0
Linux驱动开发——并发和竞态(信号量方式的使用④)
|
Linux 数据安全/隐私保护
【Rocky Linux】Rocky Linux 8.5版本全新图文安装教程并更换阿里镜像源等配置操作
【Rocky Linux】Rocky Linux 8.5版本全新图文安装教程并更换阿里镜像源等配置操作
4468 0
【Rocky Linux】Rocky Linux 8.5版本全新图文安装教程并更换阿里镜像源等配置操作
|
SQL 关系型数据库 MySQL
子查询(1)
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
子查询(1)