首页
学习
活动
专区
圈层
工具
发布

快速入门系列--WebAPI--04在老版本MVC4下的调整

WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了。...路由设置 在Global.asax文件中需要注意WebApi的路由要先于MVC的路由进行注册,不然会出现路由无效的情况。...时非常有用,最后的例子会涉及这部分内容。...如果说自定义绑定器或格式化器是用于扩展正常状态下解析数据的话,那么过滤器可以用在一些特殊情况下 IExceptionFilter ExceptionFilterAttribute 当调用操作抛出异常时,...其他小知识点 WebAPI的托管,包括通过System.Web.Http.WebHost.dll的IIS托管,配置对象为GlobalConfiguration;自托管的配置,通过Mocrosoft.AspNet.WebApi.Selfhost

1.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET WebAPI构建API接口服务实战演练

    1.2、本葵花宝典手册课程包含知识点如下: 1)、与Web API的第一次亲密接触,"奇葩"的默认路由配置  2)、 WebApi输出格式有点"丑",选择XML和JSON哪一个格式? ...二、手把手教会用ASP.NET WebAPI构建API接口服务 2.1、与Web API的第一次亲密接触,"奇葩"的默认路由配置 王小二刚兴致勃勃打开葵花宝典手册,一上来就遇到404访问不了情况。...2.2、 WebApi输出格式有点"丑",选择XML和JSON哪一个格式? 王小二好不容易把404的问题解决了,却遇到了XML和JSON生成出来的有点“丑”的样子,简直就是四不像啊!...刚准备关机睡觉的时候,总感觉心里有事情没解决,顿时坐了起,调用方怎么知道我给的接口数据结果就执行成功和失败了啊。不可能用空字符串来判断吧。听说阿笨有解决办法,我去问问题他吧!    ...2.5、ASP.NET WebApi标准格式化统一输出异常报文数据 王小二总算解决了标准格式化统一输出响应报文数据,正兴高采烈的调试第一个接口的时候,却出现了Exception这个程序员恶魔,只好无奈的看着屏幕前一堆红色的错误输出页面

    1.2K20

    WebAPI下的如何实现参数绑定

    请求消息(request message)包括了请求的所有信息,如带查询字符串的请求地址(URL),内容主体(content body)及头部信息(header)。...实际上,WebAPI使用model binding读取查询字符串(query string)内容进行参数绑定,使用Formatters读取主体内容 (body content)进行参数的绑定。...Using Formatters: Formatters(如MediaTypeFormatter类所示)实际上是包含额外元数据的序列化程序。...由于action签名中并不包含任何 负责类型,WebAPI将永远不会读取request content stream,因而这里的action方法可以读取它。...SomeType,因而应用SomeType上的特性决定其采用model binding 与MVC的区别 以下是MVC和WebAPI在参数绑定上的一些不同点: MVC只具有model binding,而没有

    1.7K60

    我们必须要知道的RESTful服务最佳实践

    这个根据实际情况其实是可要可不要的。 message——当状态值为”fail”和”error”时有效,用于显示错误信息。...当状态值为”fail”或”error”时,data仅包含错误原因或异常名称、或者null也是可以的 返回成功的响应json格式 { "code": 200, "message": "success...4** 请求错误这些状态代码表示请求可能出错,妨碍了服务器的处理。 5**(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...POST 新增一条数据 201创建成功、422新增数据验证错误、(401、403、404、406、500) DELETE 删除一条数据 204删除成功、(401、403、404、406、500) PATCH...更新实体部分信息 201更新成功、422验证数据错误(401、403、404、406、500) PUT 更新实体所有信息除ID外 201更新成功、422(401、403、404、406、500) 6

    1.5K30

    Asp.Net WebApi核心对象解析(二)

    扯淡完毕,接着聊正事,上一篇写的是Asp.Net WebApi核心对象解析(上篇),本文是下篇,不管写的怎么样,还望大家多多指正。...一.WebApi处理架构:     我们在学习Asp.Net WebApi时,应该对Asp.Net WebApi的内部运行机制有一个大致的了解,很多人说了解这些基本原理的意义不大,实际开发中应用不到而且还浪费时间...托管层:位于WebApi和底层HTTP栈之间,是最底层负责WebApi托管。        消息处理程序管道层:用与实现消息的横切关注点,例如日志和缓存。        ...(在一个owin兼容的服务器上建立一个webapi层)      在使用web托管时,所使用的是ASP.NET的管道和路由功能,将HTTP请求转发到一个新的ASP.NET处理程序,HttpControllerHandler...五.总结:    本文分为上下两篇,简单的介绍类一下Asp.Net WebApi的一些核心对象,并简单介绍了Asp.Net WebApi路由机制,处理架构,托管方式等等,如有不足和错误之处还望多多指正。

    3.6K100

    RESTful API的十个最佳实践1. 使用名词而不是动词 2. Get方法和查询参数不应该改变资源状态3. 使用名词的复数形式 4. 为关系使用子资源 5. 使用HTTP头决定序列化格式 6. 使

    WebAPI在过去几年里非常的盛行,我们很多以往的技术手段都慢慢的转换为使用WebAPI来开发,因为它的语法简单规范化,以及轻量级等特点,这种方式收到了广泛的推崇。...为集合提供过滤、排序、字段选择以及分页 过滤 为所有字段或者查询语句提供独立的查询参数: GET /cars?...fields=manufacturer,model,id,color 分页 使用offset和limit来获取固定数量的资源结果,当其中一个参数没有出现时,应该提供各自的默认值,比如默认取第一页,或者默认取...使用HTTP状态码处理错误 忽略错误处理的API是很难使用的,简单的返回500和调用堆栈是非常不友好也非常无用的: 使用HTTP状态码 HTTP标准提供了70多个状态码来描述返回值,我们不需要完全用到他们...404 – 未找到,指定的资源不存在 422 – 不可指定的请求体 – 只有服务器不能处理实体时使用,比如图像不能被格式化,或者重要字段丢失。

    3K50

    .net 温故知新【12】:Asp.Net Core WebAPI 中的Rest风格

    ASP.NET Core WebAPI接口 在ASP.NET WebAPI中我们也能看到Rest的风格,理想很丰满,显示很骨干。...URL:资源定位,也就是Rest风格,在请求的url中包含信息,比如https://xxxx/Student/1 1就是学生编号。...而在Rest 中Post通常用201返回新增成功,delete 删除的数据不存在返回404,但是404大家知道可能也许是url错误,所以表诉不清。...使用RPC风格,尽量使用合理谓词,不知道使用什么谓词的时候就用POST,Get Delete参数尽量用资源定位URL,业务错误服务端返回合适的状体吗,不知道返回什么就返回400,如果请求处理成功就用200...; } } 最后还有[FromHeader]、[FromForm]、[FromBody]这些获取参数的方式,不清楚的使用的时候查询就行了。

    64440

    BaaS API 设计规范

    不同的版本号之间,原则上可以不保证 API 的兼容。 某个版本一旦发布,在同一个版本号之内的 api 升级,必须保证兼容原来发布的 API。...主体输入 考虑到接口的扩展性,所有API的输入只能接受一般的 JSON 对象作为输入参数,同时也只能输出一个 JSON 对象。 当输入输出的值是单一值、数组时,需要使用一个对象对其进行封装。...(App、User) · 404:请求的地址未找到。如 users/1 未找到该资源。 · 500:内部程序错误。...如:01表示ACS,那么010001可能表示ACS模块中的登录API的用户名错误、010002表示ACS中的登录API的用户密码错误。 2.2.5....· 其它查询 每一个特殊查询,都需要提供相应的特殊查询地址。必须参数以URI Part 的形式给出,可选参数则以查询字符串的形式给出。

    3.3K111

    ASP.NET Core中的Controller

    ASP.NET CORE出现之前我们实现的Controller,MVC都继承自Controller基类,WebApi的话继承自ApiController。...现在ASP.NET CORE把MVC跟WebApi合并了,已经不再区分MVC或者WebApi。ASP.NET CORE的Controller继承结构也发生了变化。...使用NonControllerAttribute 如果你的一个类名恰巧包含“Controller”的后缀,但你并不想ASP.NET CORE框架发现它,你可以在类上加上NonControllerAttribute...总结 设计restful(web api)接口的时候可以继承ControllerBase 设计MVC系统的时候可以继承Controller 当一个POCO类名称包含"Controller"后缀或添加ControllerAttribute...的时候框架会认为这是一个控制器 当一个类不想被框架当做控制器的时候可以添加NonControllerAttribute

    1.9K20

    边缘安全加速平台EO,购买套餐后的接入流程及设置

    先看下菜单域名服务中就是一些基本的解析和加速域名的设置了,假如还需要配置https,则进入域名管理中,找到点编辑,进入菜单。选择SSL托管证书时,进入角色授权:然后会自动加载所有的云上的SSL证书。...注意:开启智能加速后,将增收客户端与 EdgeOne 节点的上行流量费用(客户端 一> EdgeOne 节点服务器)和智能加速请求数费用缓存配置中有,节点缓存TTL,浏览器缓存TTL,查询字符串,忽略大小写...查询字符串调整资源 URL 中的查询字符串,优化节点缓存,提升请求资源的加载速度。忽略大小写忽略或不忽略资源 URL 中英文字母的大小写,优化节点缓存,提升请求资源的加载速度。...离线缓存启用离线缓存后,当您的源站故障,即无法正常回源获取资源时,可使用节点中已缓存的资源(即使资源已过期),直到源站恢复可以根据需求开关或调试,我这里采用的追随策略。...头部和自定义错误页面等详细的功能说明及注意事项请查看 规则引擎可以使用预设模板,也可以写空白规则,建议用预设模板。

    67310

    REST API有关幂等性等11条最佳实践

    我已经看到这个错误一次又一次地重复出现。...届时,您的基础设施可能会在不同的技术平台上重写、迁移到新数据库,或与包含冲突 ID 的另一个数据库合并。 字符串 ID 非常灵活。字符串可以对版本信息或段 ID 范围进行编码。...当调用(例如)GET /things/{thing_id}请求一个不存在的东西时,响应应表明:1)服务器理解了您的请求;2)没有找到该东西。遗憾的是,404 响应并不能保证 #1。...当客户最终看到不一致的数据时,这可能是 "你的错",也可能不是,但他们给你打的支持电话将是真实的。 我的建议是选择另一种 400 级错误代码,客户可以将其理解为 "我知道你要什么,但我没有"。...有两个主要的思想流派: 1、返回错误 当客户端提交重复的幂等性密钥时,我喜欢返回 409 CONFLICT。

    64520

    如何在CentOS 7上为Apache设置mod_rewrite

    匹配重写规则时,Apache会忽略这两个字符。但是,有时可能需要查询字符串来在页面之间传递数据。...例1B:匹配选项 在某些情况下,我们可能希望将查询字符串概括为包含不同类型的鞋子。...item=pants&type=men 我们成功扩展了匹配功能,以包含URL的多个方面。 示例1D:传递查询字符串 本节不介绍任何新概念,但解决了可能出现的问题。...为此,我们将创建一个ErrorDocument规则,将404错误指向error.html页面: ErrorDocument 404 /error.html 这会将导致HTTP 404响应的任何请求重定向到...但是,事情并不总是按计划进行,当发生这种情况时,您可能会发现自己有重定向循环或模糊500 forbidden错误。有关调试这些情况的提示,请查看此StackOverflow帖子。

    6.5K00

    .NET WebAPI 采用 IDistributedCache 实现分布式缓存过滤器 Redis 模式

    分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护。 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时。...与其他将缓存数据存储在单个应用服务器上的缓存方案相比,分布式缓存具有多个优势。 当分发缓存数据时,数据: 在多个服务器的请求之间保持一致(一致性)。 在进行服务器重启和应用部署后仍然有效。...实现方案采用 Redis 作为缓存的数据托管方案,接口使用微软官方的 IDistributedCache 接口实现。...TTL 缓存有效期以秒为单位 IsUseToken 是否使用 Token 区分不同的用户身份,之所以加入这个参数,主要是因为有些接口虽然多个用户请求时的入参一样,但是不同的用户需要返回不同的信息,所以面对这种类型的接口需要将...过滤器的使用方法就很简单了,直接附在对应的接口 Action 方法上就可以,如下: [CacheDataFilter(TTL = 60, IsUseToken = true)] public DtoUser

    93250
    领券