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

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

Ⅰ.开发环境

跨平台的: .net core 2.1

宇宙级ide:vs2017

Ⅱ.代码实现

1.新建应用框架

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

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

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; }//定义输入字符串
}
}

整体文件目录如下:

测试一下,看看运行效果

Ⅲ.应用部署

1.发布应用

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

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

3.利用PostMan进行程序测试

GET方式

POST方式

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

下载源码戳这里

.net core 应用Nancy快速实现轻量级webapi的更多相关文章

  1. 一个轻量级的.Net Core微服务快速开发的轮子

    前言     Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...

  2. .NET Core 之 Nancy 基本使用

    Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...

  3. [转载]CentOS6&nbsp;快速搭建轻量级远程桌面&nbsp;Xfce&nb

    原文地址:CentOS6 快速搭建轻量级远程桌面 Xfce & VNC & Firefox作者:哈囉健一 0.系统信息 CentOS Linux release 6.0 (Final) ...

  4. 基于flask的轻量级webapi开发入门-从搭建到部署

    基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...

  5. .NET Core学习笔记(5)——WebAPI从Server端push消息到Client

    标题起得有点厉害,汉字夹杂着E文,不符合教育部公布的“向社会推荐使用的外语词中文译名”规范.不过他管不着我.写本篇的起因,是重构一个现有的WinForms程序,将Server端的部分逻辑从raw so ...

  6. docker快速创建轻量级的可移植的容器(一)

    系列其他内容 docker快速创建轻量级的可移植的容器✓ docker&flask快速构建服务接口 docker&uwsgi高性能WSGI服务器生产部署必备 docker&gu ...

  7. .net core系列之《sdk和runtime区别及使用CLI在Ubuntu上快速搭建Console,WebApi,MVC三大应用模型》

    一.需要安装的软件 1.虚拟机安装Ubuntu系统(本人用的是vmware-14.1.12和buntu-18.04) 2.Xshell或 Putty(连接ssh服务) 3.FileZilla(ftp上 ...

  8. .NET Core on K8S快速入门课程学习笔记

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...

  9. .NET Core on K8S快速入门课程--学习笔记

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...

随机推荐

  1. 项目管理工具maven(一)

    1 Maven的概述 1.1 依赖管理 就是对jar包的统一管理  可以节省空间 1.2 项目一键构建 编码  编译  测试(junit)  运行  打包  部署 一个 tomcat:run就能把项目 ...

  2. leetcode232

    public class MyQueue { Stack<int> S = new Stack<int>(); /** Initialize your data structu ...

  3. Hadoop Pipes

    [Hadoop Pipes] 1.MapContext的getInputSplit()可以用于获取当前mapper所对象的文件路经,也就是Pipes中,没有InputSplit接口/对象. 2.在Pi ...

  4. 非root用户使用1024以下端口

      如果你有一个最新的内核,确实有可能使用它作为非root用户启动服务,但绑定低端口.最简单有效的办法是: #setcap 'cap_net_bind_service=+ep' /path/to/pr ...

  5. Could not load TestContextBootstrapper [null]

    在对SpringBoot进行单元测试时,报错“Could not load TestContextBootstrapper [null]” 错误原因: Maven的pom.xml中某些SpringBo ...

  6. Castle ActiveRecord学习(六)数据验证

    参考.来源:http://www.cnblogs.com/Terrylee/archive/2006/04/13/374173.html https://github.com/castleprojec ...

  7. etl使用表

    select * from etl_data_map t;select * from etl_column t;select * from etl_table_def t;select * from ...

  8. 模拟在table中移动鼠标,高亮显示鼠标所在行,固定表头

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  9. 电商商品规则属性sku 工具类

    /** * 商品模块: * 使用:var SKU = sku.init({ id:'sku', item: item, data:data }); * @config item = [{"i ...

  10. java类加载器的一些测试

    package classloader; import java.lang.reflect.Method; import org.junit.Test; import com.example.Samp ...