一个非常轻量级的 Web API Demo
2021-03-14 06:41
                         标签:prefix   ror   open   region   ram   图片   项目   技术   cond    一个非常轻量级的 Web API Demo,代码量很少,实现了方法拦截器,token校验,异常拦截器,缓存 创建项目:如果选择Web API,项目中东西会比较多,这里选择Empty,把下面的Web API勾上,MVC不要勾   项目目录结构:    Global.asax.cs代码:这里配置方法拦截器和异常拦截器 MyActionFilter拦截器代码: MyExceptionFilter拦截器代码: 一个简单的缓存工具类: 控制器MyApiController.cs代码: 发布: 部署在IIS,用Postman测试:   一个非常轻量级的 Web API Demo 标签:prefix   ror   open   region   ram   图片   项目   技术   cond    原文地址:https://www.cnblogs.com/s0611163/p/12494720.html



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;
namespace WebApiDemo
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter());
            GlobalConfiguration.Configuration.Filters.Add(new MyActionFilter());
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    }
}


using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace WebApiDemo
{
    public class MyActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            object value;
            if (actionContext.ActionArguments.TryGetValue("token", out value))
            {
                if (value.ToString() != "000")
                {
                    var errMsg = new
                    {
                        errorMsg = "token不匹配"
                    };
                    string str = JsonConvert.SerializeObject(errMsg);
                    HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.UTF8, "application/json") };
                    actionContext.Response = result;
                }
            }
            base.OnActionExecuting(actionContext);
        }
    }
}


using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http.Filters;
namespace WebApiDemo
{
    public class MyExceptionFilter : ExceptionFilterAttribute
    {
        //重写基类的异常处理方法
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            var errMsg = new
            {
                errorMsg = "拦截到异常:" + actionExecutedContext.Exception.Message
            };
            string str = JsonConvert.SerializeObject(errMsg);
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.UTF8, "application/json") };
            actionExecutedContext.Response = result;
            base.OnException(actionExecutedContext);
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Caching;
namespace WebApiDemo
{
    public class CacheHelper
    {
        #region 获取并缓存数据
        /// 


using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using WebApiDemo.Models;
namespace WebApiDemo.Controllers
{
    [RoutePrefix("api/MyApi")]
    public class MyApiController : ApiController
    {
        [HttpGet]
        [Route("GetAction")]
        public HttpResponseMessage GetAction(string token, string param)
        {
            var obj = new
            {
                param = param
            };
            return ToJson(obj);
        }
        [HttpPost]
        [Route("PostAction")]
        public HttpResponseMessage PostAction(string token, string param, [FromBody] MyData data)
        {
            Random rnd = new Random();
            int d = CacheHelper.GetValueint>("MyCacheKey1", () =>
            {
                return rnd.Next(1, 10000);
            }, 20);
            var obj = new
            {
                param = param,
                data = data,
                cache = d.ToString()
            };
            return ToJson(obj);
        }
        [HttpGet]
        [Route("ErrorAction")]
        public HttpResponseMessage ErrorAction(string token, string param)
        {
            var obj = new
            {
                param = param
            };
            int a = Convert.ToInt32("abc");
            return ToJson(obj);
        }
        private HttpResponseMessage ToJson(object obj)
        {
            string str = JsonConvert.SerializeObject(obj);
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.UTF8, "application/json") };
            return result;
        }
    }
}


文章标题:一个非常轻量级的 Web API Demo
文章链接:http://soscw.com/index.php/essay/64461.html