【C#】使用OWIN创建Web API
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相关推荐
- 在ASP.NET Core 2.0中创建Web API
目录 介绍 先决条件 软件 技能 使用代码 第01步 - 创建项目 第02步 - 安装Nuget包 步骤03 - 添加模型 步骤04 - 添加控制器 步骤05 - 设置依赖注入 步骤06 - 运行We ...
- 元数据驱动设计 —— 为动态移动应用创建Web API
时间回到多年之前(当时我的头发还没这么稀疏),Google在4月1日这一天发布了Gmail,这不由得令许多人怀疑这个产品是否只是Google精心炮制的一个玩笑.但谁又能够去指责他们的怀疑呢?毕竟整个互 ...
- 在ASP.NET Core 2.2 中创建 Web API并结合Swagger
一.创建 ASP.NET Core WebApi项目 二.添加 三. ----------------------------------------------------------- 一.创建项 ...
- 使用.Net Core MVC创建Web API
创建.Net Core MVC 打开appsettings.json文件,添加数据库连接 {"Logging": {"LogLevel": {"Def ...
- php如何访问web api,如何在PHP中创建Web API服务?
SOAP和REST API是广泛使用的API. 考虑存在一个名为manage.php的PHP类,该类有助于管理数据库中的条目.class manage { private $entryId; func ...
- 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已 ...
- Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)
在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...
- 【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 ...
- 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)
前言 在传统的web应用程序中,客户端(浏览器)通过请求页面来启动与服务器的通信.然后服务器处理该请求,并发送HTML页面到客户端.在随后页面上的操作中--例如,用户导航到一个链接或提交一个包含数据的 ...
- oracle web API,在Web API程序中使用Swagger做接口文档
#### 创建Web API程序 在VS2019中创建一个ASP.NET Web应用程序,选择Web API来创建RESTful的HTTP服务项目,构选MVC和Web API核心引用. #### 安装 ...
最新文章
- 安全无忧,函数计算推出访问用户VPC功能,实现自定义的多类VPC网络资源互通...
- scala面向对象之trait
- Oracle函数的定义
- php 判断字符串是不存在json中
- STM32 进阶教程 5 - 内联函数
- 原因以及如何避免产生僵尸进程
- 如何创建一个新浪微博应用以及获得Access token
- SAP Spartacus page-slot.component.html
- php array第一张图片_PHP array_udiff() 函数
- C++学习之路 | PTA乙级—— 1083 是否存在相等的差 (20 分)(精简)
- mysql 数据库访问层_MYSQL数据库访问层
- 【区块链】区块链是什么?
- 项目管理-软件:国内外知名IT项目管理工具【Worktile、PingCode、Jira、Clarizen、禅道】
- 当当1024购书活动,100张4折优惠券,薅羊毛啦!
- [cocos2d-x]SpaceFighting[安卓/IOS都适用]
- 计算机显示器黑屏首先检查,计算机显示器黑屏的原因是什么?电脑显示器黑屏的解决方案...
- 成都链安预警:My Dash Wallet在线钱包存在“关键”漏洞,用户资金面临风险
- 剑指 Offer 05. 替换空格(完整代码)
- CANopen协议介绍
- 【东周列国志】读后感
热门文章
- vector性能调优之resize与reserve
- 【Flask】通过Flask_login实现用户登录
- Python2.7学习笔记-定义函数、filter/map/reduce/lambda
- 【Python之路Day12】网络篇之Paramiko
- [Flex]实现Application未初始化前加载自定义配置内容
- 小游戏大天地 ——开发者的梦想
- AGC005_E Sugigma The Showdown
- 《修炼之道:.NET开发要点精讲》读书笔记(三)
- sql常识-LEFT JOIN
- 由内而外 多项国产自主先进设计