欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core 应用Nancy快速实现轻量级webapi

程序员文章站 2022-07-08 19:50:05
目前大量数据接口均采用API的方式为各类应用提供数据服务。Nancy是.net下实现webapi的一个轻量级的框架,可以快速搭建一个api服务环境,是一种快速建立api服务的不错选择。 本文记录.net core环境下利用Nancy快速搭建webapi的全过程。 Ⅰ.开发环境 跨平台的: .net ......

目前大量数据接口均采用api的方式为各类应用提供数据服务。nancy是.net下实现webapi的一个轻量级的框架,可以快速搭建一个api服务环境,是一种快速建立api服务的不错选择。

本文记录.net core环境下利用nancy快速搭建webapi的全过程。

ⅰ.开发环境

跨平台的: 

宇宙级ide:vs2017

ⅱ.代码实现

1.新建应用框架

.net core 应用Nancy快速实现轻量级webapi

 

.net core 应用Nancy快速实现轻量级webapi

 

2.下载安装nancy类库,由于需要支持.netcore环境,则需要安装nancy2.0版本。执行下面的包安装命令。

.net core 应用Nancy快速实现轻量级webapi

 所需要包的目录结构如下:

.net core 应用Nancy快速实现轻量级webapi

 

3.实现.netcore支持nancy,修改startup.cs文件中configure的内容

using microsoft.aspnetcore.builder;
using microsoft.aspnetcore.hosting;
using microsoft.extensions.dependencyinjection;
using nancy.owin;

namespace nancy.web
{
    public class startup
    {
        // this method gets called by the runtime. use this method to add services to the container.
        // for more information on how to configure your application, visit https://go.microsoft.com/fwlink/?linkid=398940
        public void configureservices(iservicecollection services)
        {
        }

        // this method gets called by the runtime. use this method to configure the http request pipeline.
        public void configure(iapplicationbuilder app, ihostingenvironment env)
        {
            if (env.isdevelopment())
            {
                app.usedeveloperexceptionpage();
            }
            app.useowin(x => x.usenancy());

            //app.run(async (context) =>
            //{
            //    await context.response.writeasync("hello world!");
            //});
        }
    }
}

3.实现路由访问,新建homemodule.cs类,继承nancymodule,开始写nancy格式的路由。路由写法参见文档

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
using nancy;
using nancy.modelbinding;

namespace nancy.web
{
    public class homemodule:nancymodule
    {
        public homemodule()
        {
            get("/", r => "hello,nancy,i am running on asp.net core");
            get("/{name}", r => "你好:" + r.name);

post("/loadstr", r => { var strrecive = this.bind<inputstr>(); return strrecive.inputstr; }); } } }

4.解决跨域访问,新建bootstrapper.cs类,该类为nancy特有配置类,重写applicationstartup方法。

using nancy.bootstrapper;
using nancy.tinyioc;

namespace nancy.web
{
    public class bootstrapper: defaultnancybootstrapper
    {
        protected override void applicationstartup(tinyioccontainer container, ipipelines pipelines)
        {
            //cors enable  解决跨域问题           
            pipelines.afterrequest.additemtoendofpipeline((ctx) =>
            {

                ctx.response.withheader("access-control-allow-origin", "*")  // * 允许跨域问题的网站  *号代表面向所有网站  也可指定网站,如 http://localhost:8080
                            .withheader("access-control-allow-methods", "post,get,put,delete,option")
                            .withheader("access-control-allow-headers", "accept, origin, content-type");

            });

        }
    }
}

5.新建inputstr.cs类,用于测试post提交数据

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;

namespace nancy.web
{
    public class inputstr
    {
        public string inputstr { get; set; }//定义输入字符串
    }
}

 

整体文件目录如下:

.net core 应用Nancy快速实现轻量级webapi

 

测试一下,看看运行效果

.net core 应用Nancy快速实现轻量级webapi

 

.net core 应用Nancy快速实现轻量级webapi

 

ⅲ.应用部署

1.发布应用

.net core 应用Nancy快速实现轻量级webapi

 

.net core 应用Nancy快速实现轻量级webapi

 

2.部署至iis,将上面发布至publish文件夹的文件拷贝到iis服务器上

.net core 应用Nancy快速实现轻量级webapi

 

编辑应用程序池,因为是.net core项目,所以.net framework版本设置为“无托管代码”

.net core 应用Nancy快速实现轻量级webapi

 

3.利用postman进行程序测试

get方式

.net core 应用Nancy快速实现轻量级webapi

post方式

.net core 应用Nancy快速实现轻量级webapi

 

好啦,从搭建、测试到部署完成了一个轻量级的webapi。下一步可以根据具体需求进行扩展,愉快的开发接口了。

下载源码戳这里