OWIN的介绍

 OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦,使得便携式 .NET Web 应用以及跨平台的愿望成为现实, 标准的 OWIN 应用可以在任何 OWIN 兼容的服务器上运行, 不再依赖于Windows和IIS 。

 

OWIN的使用

  • 创建项目  

  • 向项目中添加Microsoft.AspNet.WebApi.Owin 和 Microsoft.AspNet.WebApi.Owin Self Host包(Self Host 用于开启OWIN Host,设置监听接受Http请求)

    

    

  • 添加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();// 默认的 Web API 路由config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional });// 将路由配置附加到 appBuilderappBuilder.UseWebApi(config);}}
}

  • 新建Controllers文件夹,添加queryControllers类

    按照 Web API 项目的约定,在项目中添加一个名称为 Controllers 的文件夹,然后新建 一个queryController类,设置其基类为 System.Web.Http.ApiController ,作为示例,其内容与 Visual Studio 自带的 Web API Controller 模板一致,包含4种请求方式(GET/POST/PUT/DELETE),用于演示,重写GET方法(直接返回请求参数)和POST方法(接受实体类参数直接返回),queryController代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;namespace OwinTest.Controllers
{public class queryController : ApiController {// GET apipublic string Get(string id){return id;}// POST apipublic DeParams Post(DeParams dp){return dp;}// PUT apipublic void Put(int id, string value){}// DELETE apipublic void Delete(int id){}}
}

  • 在Program.cs文件中的 Main 方法中添加OWIN启动方法,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin.Hosting;namespace OwinTest
{class Program{static void Main(string[] args){string baseAddress = "http://localhost:9000/";// Start OWIN host using (WebApp.Start<Startup>(url: baseAddress)){HttpClient client = new HttpClient();Console.WriteLine(baseAddress);Console.ReadLine();}}}
}


演示

  • 启动服务端程序

  • 发送GET请求

DHC是一个测试HTTP/REST API的在线工具,https://www.sprintapi.com/dhcs.html,本地测试需在Google商店下载扩展插件。

同样也可通过浏览器来直接发送GET请求,如下:

其中localhost:9000/api/query/ok 对应OWIN路由配置中的 routeTemplate: "api/{controller}/{id}"。

  • 发送POST请求

指定请求内容格式为json


  • 添加自定义请求

上述是针对API请求的路由规则(routeTemplate: "api/{controller}/{id}"),下面简述在普通MVC页面请求的路由规则(routeTemplate: "{controller}/{action}/{id}")下,自定义请求方式的方法。

-首先修改Startup中的路由规则,在{controller}后加{action},其后的{id}则会对应action中的参数。修改后的Startup如下:

-其次在之前的queryController类中添加自定义的方法,先声明请求方式([HttpGet]、[HttpPost]、[HttpDelete]、[HttpPut]等方法特性),然后添加自定义方法,如下:

-演示


有些地方不够详细,我会后期补充,理解有误的地方,还请各位批评指正。

【C#】使用OWIN创建Web API相关推荐

  1. 在ASP.NET Core 2.0中创建Web API

    目录 介绍 先决条件 软件 技能 使用代码 第01步 - 创建项目 第02步 - 安装Nuget包 步骤03 - 添加模型 步骤04 - 添加控制器 步骤05 - 设置依赖注入 步骤06 - 运行We ...

  2. 元数据驱动设计 —— 为动态移动应用创建Web API

    时间回到多年之前(当时我的头发还没这么稀疏),Google在4月1日这一天发布了Gmail,这不由得令许多人怀疑这个产品是否只是Google精心炮制的一个玩笑.但谁又能够去指责他们的怀疑呢?毕竟整个互 ...

  3. 在ASP.NET Core 2.2 中创建 Web API并结合Swagger

    一.创建 ASP.NET Core WebApi项目 二.添加 三. ----------------------------------------------------------- 一.创建项 ...

  4. 使用.Net Core MVC创建Web API

    创建.Net Core MVC 打开appsettings.json文件,添加数据库连接 {"Logging": {"LogLevel": {"Def ...

  5. php如何访问web api,如何在PHP中创建Web API服务?

    SOAP和REST API是广泛使用的API. 考虑存在一个名为manage.php的PHP类,该类有助于管理数据库中的条目.class manage { private $entryId; func ...

  6. 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证

    基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已 ...

  7. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)

    在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...

  8. 【ASP.NET Web API教程】2 创建各种Web API

    原文 [ASP.NET Web API教程]2 创建各种Web API Chapter 2: Creating Web APIs 第2章 创建各种Web API 本文引自:http://www.asp ...

  9. 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)

    前言 在传统的web应用程序中,客户端(浏览器)通过请求页面来启动与服务器的通信.然后服务器处理该请求,并发送HTML页面到客户端.在随后页面上的操作中--例如,用户导航到一个链接或提交一个包含数据的 ...

  10. oracle web API,在Web API程序中使用Swagger做接口文档

    #### 创建Web API程序 在VS2019中创建一个ASP.NET Web应用程序,选择Web API来创建RESTful的HTTP服务项目,构选MVC和Web API核心引用. #### 安装 ...

最新文章

  1. 安全无忧,函数计算推出访问用户VPC功能,实现自定义的多类VPC网络资源互通...
  2. scala面向对象之trait
  3. Oracle函数的定义
  4. php 判断字符串是不存在json中
  5. STM32 进阶教程 5 - 内联函数
  6. 原因以及如何避免产生僵尸进程
  7. 如何创建一个新浪微博应用以及获得Access token
  8. SAP Spartacus page-slot.component.html
  9. php array第一张图片_PHP array_udiff() 函数
  10. C++学习之路 | PTA乙级—— 1083 是否存在相等的差 (20 分)(精简)
  11. mysql 数据库访问层_MYSQL数据库访问层
  12. 【区块链】区块链是什么?
  13. 项目管理-软件:国内外知名IT项目管理工具【Worktile、PingCode、Jira、Clarizen、禅道】
  14. 当当1024购书活动,100张4折优惠券,薅羊毛啦!
  15. [cocos2d-x]SpaceFighting[安卓/IOS都适用]
  16. 计算机显示器黑屏首先检查,计算机显示器黑屏的原因是什么?电脑显示器黑屏的解决方案...
  17. 成都链安预警:My Dash Wallet在线钱包存在“关键”漏洞,用户资金面临风险
  18. 剑指 Offer 05. 替换空格(完整代码)
  19. CANopen协议介绍
  20. 【东周列国志】读后感

热门文章

  1. vector性能调优之resize与reserve
  2. 【Flask】通过Flask_login实现用户登录
  3. Python2.7学习笔记-定义函数、filter/map/reduce/lambda
  4. 【Python之路Day12】网络篇之Paramiko
  5. [Flex]实现Application未初始化前加载自定义配置内容
  6. 小游戏大天地 ——开发者的梦想
  7. AGC005_E Sugigma The Showdown
  8. 《修炼之道:.NET开发要点精讲》读书笔记(三)
  9. sql常识-LEFT JOIN
  10. 由内而外 多项国产自主先进设计