.net core现在已经有了大的发展,虽然笔者现在已经从事python开发,但是一直在关注.net的发展,在逛博客园的时候,发现有大家都会提到Nancy这个框架,在简单的使用之后,发现竟然是如此的简单而优雅
public class SampleModule : Nancy.NancyModule { public SampleModule() { Get["/"] = _ => "Hello World!"; } }
|
public class SampleModule : Nancy.NancyModule
{
public SampleModule()
{
Get["/"] = _ => "Hello World!";
}
}
|
代码已经上传到git上,包含源代码和docker打包脚本,大家有兴趣可以自行研究
https://github.com/BruceDone/webapi
准备环境
这和python里面的flask 类似,都是简单好用 今天我们来做一个简单好用的.net core 版的nancy 应用,然后将程序打包到docker 并发布和使用
- 开发环境:Marc Pro
- IDE: vscode
- Framework:.Net Core
- Deploy:Docker
在开发前请保证以上的环境都已经安装好了
执行命令
创建文件夹webapi 执行命令
dotnet new
复制配置
执行完后将初使化一些必要的文件 ,打开package.json,将如下内容复制进去
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.AspNetCore.Owin": "1.0.0", "Nancy": "2.0.0-barneyrubble" }, "commands": { "web": "Microsoft.AspNet.Server.Kestrel" }, "frameworks": { "netcoreapp1.0": {} } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Owin": "1.0.0",
"Nancy": "2.0.0-barneyrubble"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"netcoreapp1.0": {}
}
}
|
导入类库
保存的时候vscode 会自动导入相关的dll文件,引入成功后我们先创建StartUp.cs文件
using Microsoft.AspNetCore.Builder; using Nancy.Owin; namespace NancyApplication { public class Startup { public void Configure(IApplicationBuilder app) { app.UseOwin(x => x.UseNancy()); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using Microsoft.AspNetCore.Builder;
using Nancy.Owin;
namespace NancyApplication
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseOwin(x => x.UseNancy());
}
}
}
|
编写代码
保存后创建HomeModel.cs 文件
using Nancy; namespace NancyApplication { public class HomeModule : NancyModule { public HomeModule() { Get("/", args => "Hello World, it's Nancy on .NET Core"); } } public class PageModule : NancyModule { public PageModule() { Get("/person/{name}", args => new Person() { Name = args.name }); } } public class Person { public string Name { get; set; } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using Nancy;
namespace NancyApplication
{
public class HomeModule : NancyModule
{
public HomeModule()
{
Get("/", args => "Hello World, it's Nancy on .NET Core");
}
}
public class PageModule : NancyModule
{
public PageModule()
{
Get("/person/{name}", args => new Person() { Name = args.name });
}
}
public class Person
{
public string Name { get; set; }
}
}
|
路由与返回值都已经写好,我这里就不解释相关的代码了,有兴趣的可以自行深入了解
更新文件
编辑Program.cs文件
using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; namespace NancyApplication { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseContentRoot(Directory.GetCurrentDirectory()) .UseKestrel() .UseUrls("http://*:5000") .UseStartup<Startup>() .Build(); host.Run(); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System.IO;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
namespace NancyApplication
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseUrls("http://*:5000")
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
|
开始运行
OK,必要的文件都已经准备好了,然后运行 dotnet run ,访问http://127.0.0.1:5000 就可以看到结果,
准备部署
使用Docker来部署程序
访问我们的api地址:
± |master ?:1 ✗| → curl http://127.0.0.1:5000/person/bruce {"name":"bruce"}
|
± |master ?:1 ✗| → curl http://127.0.0.1:5000/person/bruce
{"name":"bruce"}
|
程序和代码我都已经打包到git 上了,里面有相关的说明 ,程序很方便的打包成了docker ,这样就可以很轻松的集群或者部署。
git地址:https://github.com/BruceDone/webapi
如果你觉得对你有帮助,请不要吝啬你的star ,谢谢:)
文章来源: brucedone.com,作者:大鱼的鱼塘,版权归原作者所有,如需转载,请联系作者。
原文链接:brucedone.com/archives/843
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)