我这么玩web api(一):帮助页面或用户手册(microsoft and swashbuckle help page)_编程玩家-编程思维

前言   你需要为客户编写Api调用手册?你需要测试你的Api接口?你需要和前端进行接口对接?那么这篇文章应该可以帮到你。本文将介绍创建Web Api 帮助文档页面的两种方式,Microsoft Help Page和Swashbuckle Help Page。   编写RESTful的Web Api /// <summary> /// 股票数据接口 ///

我这么玩web api(二):数据验证,全局数据验证与单元测试_编程玩家-编程思维

目录 一、模型状态 - ModelState 二、数据注解 - Data Annotations 三、自定义数据注解 四、全局数据验证 五、单元测试   一、模型状态 - ModelState   我理解的ModelState是微软在ASP.NET MVC中提出的一种新机制,它主要实现以下几个功能:   1. 保存客户端传过来的数据,如果验证不通过,把数据返回到客户端,这样可以保存用户输入,不需

浏览器跨域访问webapi_陌上荼靡-编程思维

  webapi地址:wapapi.ebcbuy.com web地址:wapweb.ebcbuy.com   在默认情况下这两个域名属于两个不同的域,他们之间的交互存在跨域的问题,但因为他们都同属于一个二级域名下,所以通过简单的设置就能实现跨域行为,但是考虑到实际生产环境中往往会出现两个域名 完全不同的情况,所以这里不考虑这种特殊的情况,使用更通用的方法来解决跨域的问题。   首先在webapi

mvc与webapi中的异常过滤器_陌上荼靡-编程思维

一、MVC的异常过滤器   1、自定义MVC异常过滤器 创建一个类,继承HandleErrorAttribute即可,如果不需要作为特性使用直接实现IExceptionFilter接口即可, 注意,该接口在System.Web.Mvc 命名空间下   /// <summary> /// 自定义的MVC异常过滤器 /// 可以在Controller或Action上单独使用,也可

web api的cors_莫问今朝乄-编程思维

  Web API中进行跨域需要在请求头中加入允许跨域请求 Access-Control-Allow-Origin=*  上面代码代表允许所有跨域请求。当然也可以只允许某个站点进行跨域请求,只需将‘*’改为指定站定即可 Access-Control-Allow-Origin=“http://www.baidu.com” 当然我们可以将允许请求写成一个过滤器,即可让指定页面允许跨域请求

webapi的多版本管理_莫问今朝乄-编程思维

1.多版本管理概念      什么是API的多版本问题?Android等App存在着多版本客户端共存的问题:由于早期没有内置升级机制,用户不会升级,拒绝升级等原因,造成了许多软件的旧版本App也在运行。开发新版本App时,要给接口增加新的功能或者修改以前接口的规范,会造成旧版本App无法使用,因此再一定情况下会“保留旧接口的运行,新功能用新接口”,这样就会存在多版本接口共存的问题。 2.解决方式

webapi返回json_莫问今朝乄-编程思维

web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Application_Start()方法中添加一句: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaType

asp.net web api(四)_莫问今朝乄-编程思维

HttpResponseException-----HTTP响应异常     如果Web API控制器抛出一个未捕捉的异常,会发生什么呢?在默认情况下,大多数异常都会转换为一个带有状态码500的内部服务器错误的HTTP响应。 这个HTTPResponseException类型是一个特殊的类型。这种异常会返回你在异常构造器中指定的任何HTTP状态码。例如,在以下方法中,如果这个id参数无效,那么会

asp.net web api(六)_莫问今朝乄-编程思维

     Asp.Net Web API不可以需要IIS。可以自己在主机上承载一个Web API      创建WebAPI.Server项目  创建一个控制器项目的服务端    在Nuget中添加Microsoft.AspNet.WebApi.SelfHost   创建Model与Controller        首先在服务端添加一个Product类型 namespace WebAPI

asp.net web api(一)_莫问今朝乄-编程思维

什么是Web API           HTTP不仅仅服务于Web Pages。他也是一个创建展示服务和数据的API的强大平台。HTTP是简单的,灵活的,无处不在的。你能够想象到几乎任何的平台都会有HTTP服务库。HTTP服务可以涉及到范围广泛的客户端,包括浏览器,各种移动设备和传统桌面应用程序。而Web API是提供了一套RestfulAPI的开发框架,它提供了较为完整的http语义支持。

asp.net web api(二)_莫问今朝乄-编程思维

  创建一个Web API项目 第一步,创建以下项目 当然,你也可以创建一个Web API项目,利用 Web API模板,Web API模板使用 ASP.Net MVC提供API的帮助页。 添加Model       一个模型就是在你的应用程序中展示数据的一个对象。ASP.NET Web API 可以自动序列化你的模型到JSON,XML或一些其它格式,然后把已序列化的数据写入到HTTP响应消息

asp.net web api(三)_莫问今朝乄-编程思维

Routing Tables路由表     在Asp.Net Web API中,一个控制器就是一个处理HTTP请求的类,控制器的public方法就被叫做action方法或简单的Action。当Web API接收到一个请求的时候,它将这个请求路由到一个Action。         注意:Web API的路由与Asp.Net MVC的路由是非常相似的。主要区别就是Web API使用的是HTTP方法

asp.net core中间件与httpmodule有何不同_hueifeng-编程思维

前言 在ASP.NET Core中最大的更改之一是对Http请求管道的更改,在ASP.NET中我们了解HttpHandler和HttpModule但是到现在这些已经被替换为中间件那么下面我们来看一下他们的不同处。 HttpHandler Handlers处理基于扩展的特定请求,HttpHandlers作为进行运行,同时做到对ASP.NET响应请求。他是一个实现System.Web.IHttpha

.net ioc模式依赖反转(dip)、控制反转(ioc)、依赖注入(di)_hueifeng-编程思维

依赖倒置原则(DIP) 依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一。他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象. 该原则规定: 高层次的模块不应该依赖低层次模块,二者都应该依赖其抽象接口. 抽象接口不应该依赖于具体实现,而具体实

asp.net core依赖注入(di)_hueifeng-编程思维

ASP.NET Core允许我们指定注册服务的生存期.服务实例将根据指定的生存时间自动处理.因此,我们无需担心清理此依赖关系,他将由ASP.NET Core框架处理.有如下三种类型的生命周期. 关于依赖注入通俗易懂的内容大家可以看一下我上一篇文章 .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI) Microsoft.Extensions.DependencyInjec

asp.net core中处理中止的请求_hueifeng-编程思维

当用户向应用程序发出请求时,服务器将解析该请求,生成响应,然后将结果发送给客户端。用户可能会在服务器处理请求的时候中止请求。就比如说用户跳转到另一个页面中获取说关闭页面。在这种情况下,我们希望停止所有正在进行的工作,以浪费不必要的资源。例如我们可能要取消SQL请求、http调用请求、CPU密集型操作等。 ASP.NET Core提供了HTTPContext.RequestAborted检测客户端

asp.net webapi 测试文档 (swagger)_hueifeng-编程思维

ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具。简单、漂亮、易用(官方demo)。通过读取JSON配置显示API .项目本身仅仅也只依赖一些html,css,js静态文件.你可以几乎放在任何Web容器上使用 捣鼓了好久最终效果如下 1、API控制器和action描述 2、测试接口 使用swagger 1.创建

通过扩展让asp.net web api支持jsonp_学亮-编程思维

我们通过继承JsonMediaTypeFormatter定义了如下一个JsonpMediaTypeFormatter类型。它的只读属性Callback代表JavaScript回调函数名称,改属性在构造函数中指定。在重写的方法WriteToStreamAsync中,对于非JSONP调用(回调函数不存在),我们直接调用基类的同名方法对响应对象实施针对JSON的序列化,否则调用WriteToStrea