Owin简介
open web Interface for doNet,在doNet Web服务器和doNet Web应用之间定义了一套标准的接口,其目的是为了实现服务器和应用之间的解耦,不再依赖于Windows和IIS
一、Owin使用
1.创建控制台项目
2.NuGet添加Microsoft.AspNet.WebApi.Owin和Microsoft.Aspnet.WebApi.OwinSelfHost
3.添加Startup类
1.1、Startup
Startup是OWIN约定的,用于对OWIN做相关配置,代码如下:
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace OwinTest{
public class Startup{
public void Configuration(IAppBuilder appBuilder){
//创建Web API 的配置
var config = new HttpConfiguration();
//启动标记路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name:"DefaultApi",
routeTemplate:"api/{controller}/{id}"
);
//将路有配置附加到appBuilder
appBuilder.UseWebApi(config);
}
}
}
1.2、Controllers类
新建一个queryController类,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace OwinTest{
public class queryController:ApiController{
//get api
public string Get(string id)
{
return id;
}
// POST api
public string Post([FromBody] string value)
{
return value;
}
// PUT api
public void Put(int id, string value)
{
}
// DELETE api
public void Delete(int id)
{
}
}
}
自建一个PersonController类,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Http;
namespance OwinTest{
public class PersonController:ApiController{
Person[] personList = new Person[] {
new Person { Id= 1,Age = 2,Name="DANNY"},
new Person { Id = 2,Age = 3,Name = "Danny123"},
new Person { Id =3,Age = 4,Name = "dANNY456"}
};
[HttpGet]
[Route("api/person/getAll")]
public List<Person> GetListAll(){
return personList.toList();
}
public List<Person> Get(string id){
return personList.toList();
}
}
}
1.3、启动WebAPI服务
Program代码如下,启动项目:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Http;
class Program
{
static void Main(string[] args)
{
string baseAddress = "http://localhost:9000/";
using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress))
{
HttpClient client = new HttpClient();
Console.WriteLine(baseAddress);
Console.ReadLine();
}
}
}
二、PostMan接口测试
2.1、自定义Route
调用PersonController的GetListAll方法
调用PersonController的Get方法(其中ok只是参数)
调用queryController的Get方法
调用queryController的Post方法
Post http://localhost:9000/api/query
以下分别是string和Pserson的参数传入:
string
stringdemo
Person
{
"Id":1,
"Name":"Danny",
"Age":18
}
public class Person{
public int Id{set;get;}
public string Name{get;set;}
public int Aget{set;get;}
}
三、参考
https://www.cnblogs.com/xishuai/p/aspnet_mvc_web_api_httpclient_json_frombody_post.html
http://www.cnblogs.com/dudu/archive/2012/05/11/asp_net_webapi_httpclient.html
https://www.cnblogs.com/webenh/p/8979510.html