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.pswp.cn/news/163062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用好說 AI 玩轉奧特曼表情包,居然還能和他們聊個天

你喜歡奧特曼嗎&#xff1f;你相信光嗎&#xff1f; 如果你已經追完了特攝劇、刷完了大電影、用濫了那幾個表情包&#xff0c;那不如來試試用 AI 給自己整點活兒新 “物料”。 不管是和奧特曼 “面對面” 聊天還是 “無中生有” 表情包&#xff0c;AI 都能做&#xff01; (※…

Python 使用SQLAlchemy數據庫模塊

SQLAlchemy 是用Python編程語言開發的一個開源項目&#xff0c;它提供了SQL工具包和ORM對象關系映射工具&#xff0c;使用MIT許可證發行&#xff0c;SQLAlchemy 提供高效和高性能的數據庫訪問&#xff0c;實現了完整的企業級持久模型。 ORM&#xff08;對象關系映射&#xff0…

MySQL For Windows的下載與安裝

教程https://www.bilibili.com/read/cv26499785/ windowse下載地址https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.35.0.msi

代理模式 (Proxy Pattern)

定義&#xff1a; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過提供一個代理&#xff08;或稱代表&#xff09;對象來控制對另一個對象的訪問。這種模式創建了一個代理對象&#xff0c;用來代表實際對象的功能&#xff0c;從而可以在…

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…

人工智能學習階段有哪些?

人工智能學習階段有哪些? 人工智能是一個跨學科、跨領域的雜交學科&#xff0c;未來的趨勢來看,人工智能的出現使人們的生活變得更美好、更便捷&#xff0c;許多小伙伴想學習人工智能&#xff0c;其實看似人工智能比較雜多&#xff0c;無從下手&#xff0c;我們只要從以下7個階…

go build自建包報錯package XXX is not in std

在構建包名的時候遇到了如下錯誤 C:\Users\xxx\Desktop\code\golx\src>go build example package example is not in std (D:\Go\src\example) 解決方法 修改 GO111MODULE go env -w GO111MODULEoff

SpringMVC 基礎知識

學習目標 掌握基于 SpringMVC 獲取請求參數與響應 json 數據操作熟練應用基于 REST 風格的請求路徑設置與參數傳遞能夠根據實際業務建立前后端開發通信協議并進行實現基于 SSM 整合技術開發任意業務模塊功能 1 SpringMVC 簡介 1.1 概述 1.1.1 web程序開發流程 【執行過程】…

【搭環境】裝Python3.8 open3d

先裝Python3.8 方法一試了找不到Python3.8的庫&#xff0c;所以用方法二裝上了。 Python3加入環境變量 更改Python默認指向 open3d需要Python3.6以上&#xff0c;最好用Ubuntu18版本&#xff0c;我用的16版本。。

從入門到精通!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…

vue3的 nextTick()的使用

引言&#xff1a; 當你修改了響應式狀態時&#xff0c;DOM 會被自動更新。但是需要注意的是&#xff0c;DOM 更新不是同步的。Vue 會在“next tick”更新周期中緩沖所有狀態的修改&#xff0c;以確保不管你進行了多少次狀態修改&#xff0c;每個組件都只會被更新一次。 要等待…

三十分鐘學會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; 日志中找錯誤原因&…