.net core 应用Nancy快速实现轻量级webapi
目前大量数据接口均采用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的更多相关文章
- 一个轻量级的.Net Core微服务快速开发的轮子
前言 Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...
- .NET Core 之 Nancy 基本使用
Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...
- [转载]CentOS6 快速搭建轻量级远程桌面 Xfce&nb
原文地址:CentOS6 快速搭建轻量级远程桌面 Xfce & VNC & Firefox作者:哈囉健一 0.系统信息 CentOS Linux release 6.0 (Final) ...
- 基于flask的轻量级webapi开发入门-从搭建到部署
基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...
- .NET Core学习笔记(5)——WebAPI从Server端push消息到Client
标题起得有点厉害,汉字夹杂着E文,不符合教育部公布的“向社会推荐使用的外语词中文译名”规范.不过他管不着我.写本篇的起因,是重构一个现有的WinForms程序,将Server端的部分逻辑从raw so ...
- docker快速创建轻量级的可移植的容器(一)
系列其他内容 docker快速创建轻量级的可移植的容器✓ docker&flask快速构建服务接口 docker&uwsgi高性能WSGI服务器生产部署必备 docker&gu ...
- .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上 ...
- .NET Core on K8S快速入门课程学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...
- .NET Core on K8S快速入门课程--学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...
随机推荐
- 20165233 Java第一章学习总结
20165233 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 Java特点:语法简单.面向对象.与平台无关.动态. 字节码不能被任何平台直接识别. ...
- call apply 使用
1.call 跟 apply的主要区别: call传入参数是一个一个传入,而 apply 使用的是数组传入 call(obj,arg1,arg2,arg3,arg4) apply(obj,[arg1, ...
- leetcode738
public class Solution { public int MonotoneIncreasingDigits(int N) { var num = N.ToString(); var len ...
- Overcoming Life's Obstacles - ASC 2017 March 03
Overcoming Life's Obstacles - How a top oboist overcame a neurological disorder to play again ©Advan ...
- 南京大学发布无序列限制的DNA编辑新工具(转自生物通)
编辑推荐: 内切酶经过改造可以成为强大的DNA编辑工具,比如ZFN.TALEN.风头正劲的CRISPR–Cas系统和充满争议的NgAgo技术.不过这些技术都是通过序列识别来实现靶向切割的,会受到序列偏 ...
- mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取
1.mybatis实现数据库的插入操作可以查看https://www.cnblogs.com/wyhluckdog/p/10149895.html这篇博文,这里面的插入操作没有返回结果,所以这篇博文就 ...
- Linux TCP拥塞控制算法原理解析
这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...
- 如何规范移动应用交互设计?UI/UX设计师须知的11个小技巧
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 十年前,手机的使用只是为了沟通. 而近几年,情况发生了很大变化,我们很难找到不使用手机的人.手机在极 ...
- 用MapReduce读HBase写MongoDB样例
1.版本信息: Hadoop版本:2.7.1 HBase版本:1.2.1 MongDB版本:3.4.14 2.HBase表名及数据: 3.Maven依赖: <dependency> < ...
- SQL group by 分组后,同一组的排序后取第一条
SELECT * FROM( SELECT [SPID] ,[PH1] ...