ASP.NET-WebAPI
官方文档: https://msdn.microsoft.com/zh-cn/library/hh833994(v=vs.108).aspx
一、相关概念和简单API的使用
1、什么是ASP.NET-WebAPI?
ASP.NET Web API是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的HTTP服务。ASP.NET WebAPI是一种用于在 .NET Framework上构建RESTful应用程序的理想平台
2.关于RESTful的理解
1、REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP、URI、XML、JSON、HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计,它是一种设计风格,不是一种标准,是一种思想。
2、REST架构的主要原则
事务为对象,资源有统一,形式有多样(xml、json等)
每个资源都有一个唯一的资源标识符。
同一个资源具有多种表现形式(xml,json等)
对资源的各种操作不会改变资源标识符。
所有的操作都是无状态的
符合REST原则的架构方式即可称为RESTful
3、什么是RESTful
这种服务是面向资源服务开发的
4、为什么会出现RESTful?
在Restful之前写一个web请求,格式通常是这样的:
http://192.168.1.100/product/query/1 根据用户id查询商品
http://192.168.1.100/product/Add 新增商品
http://192.168.1.100/product/update 修改商品
http://192.168.1.100/product/delete 删除商品
Restful用法:
http://192.168.1.100/product/1 GET 根据用户id查询商品
http://192.168.1.100/product/ POST 新增商品
http://192.168.1.100/product/ PUT 修改商品
http://192.168.1.100/product/ DELETE 删除商品
Restful风格就是根据请求的类型(get、post、put、delete)来匹配对应的方法
MVC4.0中发布了第一个版本的WEBAPI
3、WebAPI2的基本使用与路由
1、通过代码演示
2、为什么要使用WebAPI的特性路由?
在实际开发中,http请求的方法可能是相同的(比如都是post请求),而且请求的参数也相同。这个问题就麻烦了,因为按照Restful的风格无法解决。大家可能想到自定义一个路由,比如可以增加action,但是在webAPI里面是不提倡的
3、解决方法
首先,启用特性路由。就可以使用特性路由。Get方式简单
4、post请求的规范
4.1无参数的post请求和get方式请求相同。只不过在客户端 $.get和$.post区别。同时只需要添加[httpPost]标记特性即可。
HttpGet通过消息头 <head> 传递参数。 HttpPost通过消息体(消息正文 <Body>)传递的
4.1 一个参数的POST请求
和get方式不一样,action(动作方法)参数上面必须添加[FromBody]标记,否则访问不到!同时WebAPI请求传递的参数,也有特定的格式。而这种格式并不是我们常见的 key-value格式。
WebAPI模型绑定器寻找的时候,并不是按照key查找,而是空字符串。[FromBody]修饰的参数形式只适合一个参数