webapi 初识 net
1.新建一个webapi 项目。
2.新建筛选器文件,用户在接口执行前后进行特性操作。
public class MyActionWebApiAttribute : ActionFilterAttribute
{
public EnumHeader HeaderCode { set; get; }
public override bool AllowMultiple
{
get
{
return false;
}
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
HttpResponseMessage response = actionExecutedContext.ActionContext.Response;
try
{
response.Content.Headers.Clear();
string HeaderCodeStr = "text/html";
if (HeaderCode == EnumHeader.application_xml)
{
HeaderCodeStr = "application/xml";
}
else if (HeaderCode == EnumHeader.application_json)
{
HeaderCodeStr = "application/json";
}
response.Content.Headers.Add("Content-Type", HeaderCodeStr + "; charset=utf-8");
}
catch (Exception ex)
{
}
}
}//end
public enum EnumHeader
{
text_html,
application_json,
application_xml
}//end
重要点:
A)ActionFilterAttribute 必须要引入System.Web.Http.Filters;
B)
public override bool AllowMultiple
{
get
{
return false;
}
}
防止筛选器执行两遍。
C) HttpResponseMessage response = actionExecutedContext.ActionContext.Response;
response.Content.Headers.Clear();
response.Content.Headers.Add("Content-Type", "text/html; charset=utf-8");
用于更改头文件。
3.在webapi中注册筛选器
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);
config.Filters.Add(new MyActionWebApiAttribute());
// 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。
// 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。
// 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。
//config.EnableQuerySupport(); // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行
// 有关详细信息,请参阅: http://www.asp.net/web-api
config.EnableSystemDiagnosticsTracing();
}
重要点:
A)路径配置改为{action} 否则会有许多问题。
B)config.Filters.Add(new MyActionWebApiAttribute());
注册筛选器
4.使用
[HttpPost]
[MyActionWebApi(HeaderCode = EnumHeader.application_json)]
public Site SiteList()
{
Site sites = new Site { SiteId = , Title = "test", Uri = "http://www.cnblogs.com/hcfan" };
return sites;
}
public class Site
{
public int SiteId { get; set; }
public string Title { get; set; }
public string Uri { get; set; }
}
ok:success
webapi 初识 net的更多相关文章
- 初识Asp.Net WebApi
using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.T ...
- 初识WebAPI
(一)Web API简介: 目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性状态转移(REST),其中REST模式的Web服务与复杂的SOA和RPC对比来 ...
- WebAPI测试概念及postman初识
什么是接口? ------ 某个对象和外界交互的部分 消息交互接口:基于soap的web service ---- http协议 web api ------- http协议 diame ...
- .net core系列之初识asp.net core
.net core已经发布了2.0版本,相对于1.0的有了很大的完善,最近准备在项目中尝试使用asp.net core,所以就进行了一些简单的研究. 初识asp.net core分为以下几个部分: 1 ...
- ASP.NET Core WebAPI中使用JWT Bearer认证和授权
目录 为什么是 JWT Bearer 什么是 JWT JWT 的优缺点 在 WebAPI 中使用 JWT 认证 刷新 Token 使用授权 简单授权 基于固定角色的授权 基于策略的授权 自定义策略授权 ...
- ASP.NET Web API 2系列(三):查看WebAPI接口的详细说明及测试接口
引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebAp ...
- webapi - 使用依赖注入
本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity:由于快过年这段时间打算 ...
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
随机推荐
- stark组件(2):提取公共视图函数、URL分发和设置别名
效果图: Handler类里处理的增删改查.路由分发.给URL设置别名等包括以后还要添加的很多功能,每一个数据库的类都需要,所以我们要把Handler提取成一个基类.提取成基类后,每一个数据表都可以继 ...
- mysql同步故障解决
故障现象:Slave_SQL_Running: No Slave状态:mysql> show slave status\GSlave_IO_Running: YesSlave_SQL_Runni ...
- 水题:HDU1303-Doubles
Doubles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 百度之星初赛A 今夕何夕
今夕何夕 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年 ...
- VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)
db_connected = False '获取数据库连接设置dsn_name = Trim(Worksheets("加载策略").Cells(2, 5).Value) ---- ...
- leetcode 【 Merge Sorted Array 】python 实现
题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume ...
- Wordpress 自定义文章类型添加 Categoried、Tags
默认情况下 ,自定义文章类型没有分类和标签属性,需要通过 register_taxonomy_for_object_type 手动注册文章分类和标签,可以通过在 functions.php 或插件中添 ...
- c4d 帮助 prime r16 usage
c4d 帮助 prime cinema 4d prime c4d 基础 前言 usage 开始 双击程序图标 双击一个场景文件 用开始菜单 windows 二选一 从 ...
- proteus仿真 引脚显示电平变化但不能显示波形
proteus仿真 引脚显示电平变化但不能显示波形 原来是没有选择通道问题,proteus默认优先使用A通道才会显示波形,如果优先使用B,C,D通道,需要选择...
- php中session的生成机制、回收机制和存储机制探究
1.php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的.设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态).我们现在有一个疑问 ...