Nancy (二)

最近做CS项目,一直在使用TCP+Socket 做数据传输,不太爽,砸门可是多年BS的开发,这样开发接口出去比较费劲,但是又不想用asp.net mvc webapi,要按照IIS,有些工控机的系统环境也是很尴尬的,那么也可以用wcf啊,不用依赖IIS,比较麻烦。所以还是用了Nancy!

1 老规矩,Nuget下载!

2 简单画个页面

 

3 上代码 (NancyModule) 注意Post方法的From参数获取和Body参数获取,代码中均有给到 

/// <summary>/// 使用NancyModule来定义路由/// </summary>public class CustomNancyModule : NancyModule{//private static readonly XDeclaration _defaultDeclaration = new XDeclaration("1.0", null, null);public CustomNancyModule(){Get("/", x => { return "Hello World!"; });   //  单斜杆位根节点,这里和mvc 中的 路由是一样的Get("/greet/{name}", x =>{return "Hello " + x.name;});Get("/GetJsonOBJ", x =>{return Response.AsJson(new { name = "张三" });});Get("/GetMyText", x =>{return Response.AsText("我是文本", System.Text.Encoding.UTF8);});Get("/GetRequsetInfo", x =>{List<Para> list = new List<Para>();Para para = new Para();para.A = Request.Query["A"];para.B = Request.Query["B"];list.Add(para);return Response.AsJson(para);  //会自动转JSON });Post("/data", x =>{// 获取 POST 的 JSON 字符串if (this.Request.Body.CanRead){this.Request.Body.ReadByte();}var jsonStr = GetStreamStr(this.Request.Body);//string name = Request.Form["name"];//string age = Request.Form["age"];string readString = jsonStr;Para para = new Para();para.A = this.Request.Form["A"];para.B = this.Request.Form["B"];return Response.AsJson(para);  //会自动转JSON});}public string GetStreamStr(Stream stream){string readString = "";if (stream.CanRead){stream.Position = 0;byte[] readBuffer = new byte[stream.Length];int count = stream.Read(readBuffer, 0, readBuffer.Length);//首先通过流读出的readBuffer的数据求出从相应Char的数量int charCount = Encoding.Default.GetCharCount(readBuffer, 0, count);//通过该Char的数量 设定一个新的readCharArray数组char[] readCharArray = new char[charCount];//Encoding 类的强悍之处就是不仅包含加密的方法,甚至将解密者都能创建出来(GetDecoder()),//解密者便会将readCharArray填充(通过GetChars方法,把readBuffer 逐个转化将byte转化成char,并且按一致顺序填充到readCharArray中)Encoding.Default.GetDecoder().GetChars(readBuffer, 0, count, readCharArray, 0);for (int i = 0; i < readCharArray.Length; i++){readString += readCharArray[i];}stream.Close();}return readString;}public class JsonReslut<T> where T : class{public int result { get; set; }public T Obj { get; set; }}public class Para{public string A { get; set; }public string B { get; set; }}}

2 页面代码

 public partial class Nancy_Form : Form{public Nancy_Form(){InitializeComponent();}private NancyHost host;//开始private void button1_Click(object sender, EventArgs e){try{if (host != null){richTextBox1.AppendText("已经启动 \r\n");return;}//Nancy Self Host 必须加上 AutomaticUrlReservationCreation, 否则 host.Start()会报异常HostConfiguration hostConfigs = new HostConfiguration(){UrlReservations = new UrlReservations() { CreateAutomatically = true }}; // 创建 NancyHost 实例host = new NancyHost(new Uri("http://localhost:8082"), new DefaultNancyBootstrapper(), hostConfigs); // 启动 NancyHosthost.Start();richTextBox1.AppendText("Running on http://localhost:8082 \r\n");}catch (Exception ex){richTextBox1.AppendText("站点启动失败:" + ex.Message);}}//关闭private void button2_Click(object sender, EventArgs e){try{if (host == null){richTextBox1.AppendText("站点已经停止 \r\n");return;}// 停止 NancyHosthost.Stop();host = null;richTextBox1.AppendText("站点已经停止 \r\n");}catch (Exception ex){richTextBox1.AppendText("站点停止失败," + ex.Message);}}}

简单写到这里!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用好说 AI 玩转奥特曼表情包,居然还能和他们聊个天

你喜欢奥特曼吗&#xff1f;你相信光吗&#xff1f; 如果你已经追完了特摄剧、刷完了大电影、用滥了那几个表情包&#xff0c;那不如来试试用 AI 给自己整点活儿新 “物料”。 不管是和奥特曼 “面对面” 聊天还是 “无中生有” 表情包&#xff0c;AI 都能做&#xff01; (※…

spring boot 热部署

相信小伙伴们在日常的开发中&#xff0c;调试代码时&#xff0c;免不了经常修改代码&#xff0c;这个时候&#xff0c;为了验证效果&#xff0c;必须要重启 Spring Boot 应用。 频繁地重启应用&#xff0c;导致开发效率降低&#xff0c;加班随之而来。有没有什么办法&#xff0…

宏电股份受邀参加中国联通战新共创启航大会,共筑产业生态,链通数智未来

11月21日&#xff0c;由中国联通举办的主题为“共筑产业生态&#xff0c;链通数智未来”的网络安全现代产业链共链行动计划暨战新共创启航大会“5G工业互联网”专题供需对接会在北京顺利召开&#xff0c;宏电股份董事长左绍舟应邀出席活动。 会议现场&#xff0c;中国联通雁飞…

Rust开发——数据对象的内存布局

枚举与Sized 数据 一般数据类型的布局是其大小&#xff08;size&#xff09;、对齐方式&#xff08;align&#xff09;及其字段的相对偏移量。 1. 枚举&#xff08;Enum&#xff09;的布局&#xff1a; 枚举类型在内存中的布局通常是由编译器来确定的。不同的编译器可能有不…

centos7 系统keepalived 定时执行脚本

安装keepalived yum install -y keepalived 修改配置文件 配置文件路径 /etc/keepalived 配置文件内容 global_defs {router_id localhost.localdomain # 访问到主机&#xff0c;本机的hostname&#xff0c;需要修改 }vrrp_script chk_http_port {script "/etc/kee…

INFLOW:用于检测隐藏服务器的反向网络流水印

文章信息 论文题目&#xff1a;INFLOW: Inverse Network Flow Watermarking for Detecting Hidden Servers 期刊&#xff08;会议&#xff09;&#xff1a;IEEE INFOCOM 2018 - IEEE Conference on Computer Communications 级别&#xff1a;CCF A 文章链接&#xff1a;https:…

Docker 安装 Apache

目录 拉取官方 Apache 镜像 查看本地镜像 列出正在运行的容器 运行 Apache 容器 创建一个 HTML 文件&#xff1a;index.html 访问 Apache 拉取官方 Apache 镜像 查找 Docker Hub 上的 httpd 镜像。 可以通过 Tags 查看其他版本的 httpd&#xff0c;默认是最新版本 httpd…

SpringMVC 基础知识

学习目标 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作熟练应用基于 REST 风格的请求路径设置与参数传递能够根据实际业务建立前后端开发通信协议并进行实现基于 SSM 整合技术开发任意业务模块功能 1 SpringMVC 简介 1.1 概述 1.1.1 web程序开发流程 【执行过程】…

从入门到精通!Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师!

Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师&#xff01; 个人简介什么是数据分析如何自学数据分析书籍推荐作译者简介作者简介译者简介 主要变动导读视频&#xff1a;购书链接&#xff1a;参与方式往期赠书回顾 个人简介 &#x1f3d8;️&…

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角&#xff0c;点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径&#xff0c; 动态转移方程为&#xff1a;dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java&#xff1a; import java.a…

三十分钟学会Shell(上)

Shell ​ Shell 本身并不是内核的一部分&#xff0c;它只是站在内核的基础上编写的一个应用程序&#xff0c;是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性&#xff0c;就是开机立马启动&#xff0c;并呈现在用户面前&#xff1b;用户通过 Shell 来使用 Linux&#x…

Windows日常故障自我排查:用工具eventvwr.msc(事件查看器)分析问题故障

windows故障排查方法一&#xff1a; 工具用法 系统故障问题时&#xff0c;找不到解决方法 首先&#xff0c; 在搜索栏输入&#xff1a; 事件查看器(eventvwr.msc) 打开程序 根据程序找到程序运行的LOG 根据程序Operational筛选出错误日志&#xff1a; 日志中找错误原因&…

假期宅家不无聊,用极米投影仪H6 Pro 4K解锁宅家多样玩法

不知道大家平时的假期是怎么度过的&#xff0c;是选择出门游玩?还是要在家好好安排自己的学习充电计划?平日工作这么累&#xff0c;不如趁假期好好休息一下&#xff0c;把以前落下的番剧补回来。不过手机的屏幕太小&#xff0c;电脑又不能躺在床上看&#xff0c;只有够大尺寸…

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 Lora LoraWAN教程 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;htt…

解决mv3版本浏览器插件,不能注入js脚本问题

文章目录 背景引入ifream解决ifream和父页面完全跨域问题参考链接 背景 浏览器插件升级mv3版本后&#xff0c;不能再使用content_script内容脚本向原浏览器&#xff08;top&#xff09;注入script标签达到注入脚本的目的。浏览器认为插入未经审核的脚本是不安全的行为。 引入…

ajax请求方式处理

1、前置准备 1.1、SpringBoot项目下&#xff1a;写一个controller RestController public class TestController {RequestMapping("/yyy")public void test(HttpServletRequest request, HttpServletResponse response){String yang request.getParameter("y…

AI助力钢铁产业数字化,python基于YOLOv5开发构建钢铁产业产品智能自动化检测识别系统

AI为工业产业智能化数字化赋能早已不是什么新鲜事&#xff0c;越来越多的行业和领域开始更大范围去拥抱AI&#xff0c;享受科技带来的变革力量&#xff0c;在我们之前的文章中也有很多相关领域项目的实践经历&#xff0c;本文的核心目标就是想要基于钢铁领域产品数据来开发构建…

【KMP算法】学习总结

说明&#xff1a; 文章内容为对KMP算法的总结&#xff0c;以及力扣例题&#xff1b;文章内容为个人的学习总结&#xff0c;如有错误&#xff0c;欢迎指正。 文章目录 1. KMP算法1.1 算法步骤1.2 关于指针回退问题 2 . LeetCode例题 1. KMP算法 1.1 算法步骤 KMP算法通常用于…