RESTful WebApi初步学习

1 RESTful:架构风格,就是以资源为视角,来描述服务的。

因为移动互联网时代来临:用json/xml来描述,http方法 统一了数据操作

它的目标是用来找数据,而不是看重接口。

表现层的状态转换;资源;统一接口;URI;无状态;

资源:实体就是资源,json/xml 数据流

统一接口:CRUD,是通过http的method体现 get,post.put/patch.delete

URI:url

无状态:如http协议就是无状态的 前后没有关联

路由过程:

1 启动 Global.asax的Application_Start -> WebApiConfig.Resgister -> 把路由规则写入一个容器

2.运行 请求会去容器匹配 -> 找的是控制器 -> 然后找action

a.以特性为准[HttpGet]

b.以Get开头的

c.优先最匹配的

一个资源,同一种操作更新,可能有多个来源途径

版本号:v1/v2等 - 使用默认路由基本做不到

特性路由:

1. 注册config.MapHttpAttributeRoutes();特性路由

2. 控制器/action都可以写特性

WebApi 传递参数和数据获取有很多坑 --

Http协议:无状态的协议 客户端和服务端就是一次性的。

传输内容字符串: 客户端-服务端:request header body 文字描述了数据信息。

服务端,解析字符串,拿到关注的信息,完成业务操作,返回字符串。

response header body。

实例化参数,参数只有两个来源:地址参数;表单参数;

调用方法的参数,都是来源于这个解析,其实不解析也可以拿到,比如HttpContext.Current.Requert

那些所谓的坑,其实就是webapi自己识别参数的时候,遗漏的小问题。

如果想要从根本上避免,只能去重写绑定。

否则,就只能根据规则。

Get - 实体传输:

1、[FormUri] : 前台传递实体json的情况下,在后台接口参数加上[FromUri] 就可以自动绑定了。

2、[FormBody] : 这种情况,后台无法自动绑定。

3、先Json序列化实体,再传递 和传递单纯的参数一样。

{user : Json.stringify(data)}

Post - form参数

1、post请求 [FromBody] 默认绑定表单参数,不是按照key-value格式 而是按 =value格式 只有一个数据的时候不要Key。

2、如果想要传递的是key-value 格式,那就直接传递一个实体对象。

3、可以进行Json序列化 然后传递 不过需要指定传递的格式为json格式 - contentType:'application/json' ,不指定也是无效的。

4、如果需要传递两个或以上的实体参数 - 直接包成一个对象然后Json序列化传递

想拿到数据,一定可以使用 HttpContext.Current.Request.Form[];

或者使用dynamic 来拿到具体的数据 不过在方法的入参不能是dynamic 但是可以把人参赋值给dynamimc来拿到数据! - 入参一般为 JObject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值