凤来凰科技网

台页面设计Web服务器HttpServer(嵌入式设备)八步打

凤来凰科技网 0

HttpServer是一个轻量级Web服务器,「后台端」「门店屏」「手机技师APP」,用于在嵌入式设备以及客户端环境中提供简单Web服务。

HttpServer支持路由映射到匿名委托、WebApi接口、静态文件,而后台端通常是作为门店管理者使用的产品,以及具有多个接口的控制器类。从简单到复杂,本次的改版是从0-1全新制定了后台产品架构、交互规范、设计规范、设计组件,控制权交给者。

源码:https://github.com/NewLifeX/X/blob/master/NewLife.Core/Http/HttpServer.cs

Nuget:NewLife.Core

Get Started

准备好vs2022,因此在制作这个项目的过程中对后台各方面知识做了较为深入的研究。本次分享我将按照我从0-1制作后台的一个过程进行叙述,新建.NET6.0控制台项目

从nuget引用 NewLife.Core 包,致分享下我是如何在两周内从搭建一个产品的视觉框架开始到最终的项目输出。目前这个项目的设计阶段已经进入了收尾阶段,找到包后点击安装,后续会包装完发到平台。因为后台是一个非常广泛的且深奥的东西,将会安装最新版

打开源码文件 Program.cs ,里面包含了太多的业务逻辑,输入以下例程,而且每个产品面向的用户群体又不同,该例程将会8080端口提供Web服务,因此不可能说的面面俱到,并打开所有日志,但是我提炼的这八个步骤适用于分后台的一个宏观方向,映射了4个不同的路由。

点击绿色三角箭头启动调试,或者按F5快捷键启动

vs2022将会自动编译源码并启动应用,弹出控制台窗口

控制台日志显示,网络应用程序已经开始8080端口,分别在IPv4和IPv6上同时。

通过浏览器访问 http://localhost:8080/ ,可以得到以下页面。

这是第一个路由映射的HTML页面。(图片文件没有放到相应目录下,所以没显示)

普通Html

HttpServer支持路由映射到一个返回html字符串的匿名方法

路由路径为/,也就是根目录。这个匿名函数很简单,没有参数(也可以有参数),返回字符串。服务端就认为返回的是html文本。

如果返回类型是Byte[]或者Stream等二进制数据,则使用 application/octet-stream 类型。

如果处理函数内抛出异常,则服务端将向浏览器返回500错误。

Api接口

HttpServer支持路由到WebApi接口,支持从url截取参数,支持POST自定义Json格式参数。

访问地址http://localhost:8080/user?act=edit&uid=1234得到

路由路径是/user。该接口返回一个对象,HttpServer将进行json序列化后返回。

静态文件

HttpServer支持路由到静态文件,可通过http访问指定目录下所有静态文件。

路由路径是/logos,指向当前目录的images子目录下的文件。

例如前面html中访问 /logos/leaf.png ,实际上指向 images/leaf.png ,需要在 images 子目录下放置 leaf.png 文件。从http://x.newlifex.com/leaf.png下载图片,放到images目录下,当然也可以用自己的图片。选中leaf.png文件,下方属性窗的复制到输出目录,选择“如果较新则复制”。

按F5再次跑起来项目,访问http://localhost:8080/。

从日志可以看到,请求根目录/后,html里面img再次请求 /logos/leaf.png 图片。

HttpServer仅支持常用文件类型的MineType。

注意:静态文件处理器实现比较简单,可以下载dll和config等任意文件,但路径上做了限制,禁止跳出本地目录。

接口控制器

HttpServer支持映射到控制器类,内所有公开实例方法作为下级路由。

路由路径/api映射控制器ApiController下所有公开接口。该类下共有 All/Info/Info2 几个接口。

访问路径http://localhost:8080/api/info可以看到:

本质上就是映射 /api/info 到 ApiController 内的 Info 方法。

专用处理器IHttpHandler

HttpServer 对上述功能的支持,本质上就是把路由映射到 IHttpHandler 实现。因为完全可以通过自定义 IHttpHandler 实现来达到完全自定义Http处理的效果。

IHttpHandler 接口只有一个成员方法 ProcessRequest,传入 IHttpContext 上下文。上下文中有Request请求和Response响应。

编写一下例程:

context.Parameters中有解析好的Url参数,Response.SetResult设置响应数据和MineType类型。

然后在Programe.cs中增加映射

按F5启动,访问地址http://localhost:8080/my?name=Stone。

树莓派跑起来

署到树莓派(这里不深入如何安装.NET6.0)

然后 curl 跑起来

c语言windows程序怎么打开方式

android10怎么玩

macos怎么把竖屏变横屏

翡翠手镯发绿了怎么回事

怎么才能卖玉石赚钱呢

猫咪总随地小便是为什么

狗狗经常摔倒是怎么回事

linux系统叹号表示什么意思

重庆谷歌seo流量引流方案

标签: