zoukankan      html  css  js  c++  java
  • 【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 }
                );
                // 将路由配置附加到 appBuilder
                appBuilder.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 api
            public string Get(string id)
            {
                return id;
            }
            // POST api
             public DeParams Post(DeParams dp)
            {
                return dp;
            }
            // PUT api
            public void Put(int id, string value)
            {
            }
            // DELETE api
            public 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]等方法特性),然后添加自定义方法,如下:

    -演示


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

     
     
  • 相关阅读:
    Linux:目录结构
    Linux安装日志(anaconda-ks.cfg、install.log、install.log.syslog)
    Docker:Dockerfile基础知识
    Docker:容器数据卷
    多线程设计模式:两阶段终止模式
    多线程:Thread中的常见方法
    多线程:查看进程线程方法
    多线程:创建线程
    Apollo:工作原理 核心概念
    Apollo:环境搭建
  • 原文地址:https://www.cnblogs.com/webenh/p/8979510.html
Copyright © 2011-2022 走看看