目前大量数据接口均采用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. 并发包学习(三)-AbstractQueuedSynchronizer总结

    J.U.C学习的第二篇AQS.AQS在Java并发包中的重要性,毋庸置疑,所以单独拿出来理一理.本文参考总结自<Java并发编程的艺术>第五章第二节队列同步器. 什么是AbstractQu ...

  2. Springboot 配置文件加解密

    功能介绍 在Spring boot开发过程中,需要在配置文件里配置许多信息,如数据库的连接信息等,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了,因此需要进行加密处理才行 ...

  3. parentNode,parentElement,offsetParent

    offsetParent直接的将是影响元素位置的上级element,而parentElement与位置显示无关时dom中的上级element. 例如: <BODY> <div sty ...

  4. Direcshow之视频捕捉<转>

    关于视频捕捉(About Video Capture in Dshow) 1. 视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图都称之为捕捉graph图.捕捉graph图比一般的文件回 ...

  5. 跨域资源共享/option 请求产生原因

    https://blog.csdn.net/hfahe/article/details/7730944

  6. windows到ubuntu

    按照xmarks同步浏览器书签. mvn, copy setting.xml 最好不要用apt-get install maven, 占用/的磁盘空间 mvn -U package -P"d ...

  7. JSP九大对象

    内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 JSP中九大内置对象为: request——请求对象——类型 javax.servlet.ServletRe ...

  8. shader一般都是用工具调试的

    N卡的话用nvidia的nVidia FX Composer, A卡的话用ATI的render monkey 顶点着色器从何方拿到这些数据?在U3D环境下,答案是从绑定到game object中的Me ...

  9. Spring IoC底层原理

    -------------------siwuxie095                                 Spring IoC 底层原理         1.IoC 即 Invers ...

  10. iOS7的iBeacon初步使用

    iBeacon是iOS7的新增的功能,通过BLE实现室内定位,精确到厘米级别. 测试使用两台iPhone(支持BLE),一台作为iBeacon基站广播信号,代码使用官方源码AirLocate,另外一台 ...