介绍:
WebAPI用来开发系统间接口的技术,基于HTTP协议,返回默认是json格式。比wcf简单 更通用,更轻量级,更省流量(json格式);
WebAPI尽可能复用MVC路由、ModelBinder、Filter等知识,但只是模仿
webapi默认路由机制是通过http请求类型匹配Action(REST风格),而MVC的默认路由机制是通过url匹配Action。
可以修改webapi默认路由机制,通过url匹配action

Restfull风格:
就是基于谓词语义进行通讯协议的设计(利用get、post、put、delete请求接口,并通过http状态码返回结果,但是太多不好用)

webapi参数绑定:
get请求:

可以有多个重载、多个参数
如果使用实体参数,实体参数需要加[FromUri]

post请求:

所以只能有一个参数,如果有多个参数,需要以对象的方式传递、或者JObject参数

单个参数,需要加[FromBody],键名称必须是空字符串
实体参数,不需要加[FromBody]
实体参数也可以使用JObject参数接收
可以传json格式字符串,自动绑定实体(请求类型需要设置为json格式 contentType:json)

put请求:

只能有两个参数,一个通过querystring方式传递,作为要更新对象的主键,另一个是[FromBody]字段,如果是多个字段需要封装成实体

    public class ValuesController : ApiController
{
[HttpGet]
public string Index([FromUri]User user)
{
return "index1";
}
[HttpGet]
public string Index33(string name, int id)
{
return "index33";
}
[HttpGet]
public string Index2(int id)
{
return "index2";
}
[HttpPost]
public string PIndex1(int id)
{
return "pindex1";
}
[HttpPost]
public string PIndex2([FromBody]int id)
{
return "pindex2";
}
[HttpPost]
public string PIndex3(User user)
{
return "pindex3";
}
[HttpPost]
public string PIndex5(JObject jobj)
{
var user1 = jobj["UserInfo"].ToObject<User>();
var dog1 = jobj["DogInfo"].ToObject<Dog>();
return "pindex5";
}[HttpPost]
public string PIndex6(JObject jobj)
{
var usider1 = jobj["id"].ToObject<int>();
var name = jobj["name"].ToObject<string>();
return "pindex6";
}
}
public class User
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Dog
{
public string DogName { get; set; }
}

webapi简介及参数绑定的更多相关文章

  1. WebAPI路由、参数绑定

    ​ 一.测试Web API a)测试Web API可以用来检测请求和返回数据是否正常,可以使用Fiddler.Postman等工具.以Fiddler为例,这是一个http协议调试代理工具,它能够记录客 ...

  2. .net core Web API参数绑定规则

    参数推理绑定 先从一个问题说起,微信小程序按照WebAPI定义的参数传递,Get请求服务器端可以正常接收到参数,但是Post请求取不到. Web API代码(.netcore 3.1)如下: [Htt ...

  3. WebAPI下的如何实现参数绑定

    本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...

  4. WebApi 参数绑定方法

    WebAPI 2参数绑定方法   简单类型参数 Example 1: Sending a simple parameter in the Url 01 02 03 04 05 06 07 08 09 ...

  5. [译]WebAPI下的如何实现参数绑定

    本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...

  6. asp.net webapi 参数绑定总结

    首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...

  7. ASP.NET WebAPI 05 参数绑定

    ParameterBindingAttribute 在上一篇中重点讲了ModelBinderAttribute的使用场景.这一篇详细的讲一下ModelBinder背后的参数绑定原理. ModelBin ...

  8. asp.net webapi参数绑定

    content={"content": [{"comb_id": "100323","comb_name": " ...

  9. @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    文章主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...

随机推荐

  1. 深挖计算机基础:Linux性能优化学习笔记

    参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...

  2. 【2019年08月26日】A股最便宜的股票

    查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 便宜指数 = PE + PB + 股息 + ROE,四因子等权,数值越大代表越低估. 本策略只是根据最新的数据来选 ...

  3. STM32移植ROS--发布超声波信息

    前言:之前ROS跟单片机的底层通讯主要是通过串口自定的协议来做,比如官网提供的arduino串口驱动一样,需要ROS往下发一个指令,单片机再回传一个指令,要写一大堆的协议,这样很麻烦,效率也比较低, ...

  4. 原生js实现append()方法

    一.在使用jquery时,append() 方法在被选元素的结尾(仍然在内部)插入指定内容 使用方法:$(selector).append(content),content为必需的.规定要插入的内容( ...

  5. [MFC]_在vs2019中使用MFC快速构建简单windows窗口程序

    微软基础类库(英语: Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发 ...

  6. 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

    virtualenv和Flask的安装前面已经介绍过了,这里主要讲如何在venv中安装MySQL 安装MySQLdb 下载MySQL-python-1.2.3.win32-py2.7.exe并安装. ...

  7. D3力布图绘制--节点间的多条关系连接线的方法(转)

    在项目中遇到这样的场景,在使用D3.js绘制力布图的过程中,需要在2个节点间绘制多条连接线,找到一个不错的算法,在此分享下. 效果图: HTML中要连接 <!DOCTYPE html> & ...

  8. SpringDataRedis入门Demo

    步骤: 约定>配置>代码 在pom.xml中导入依赖(redis和jedis以及其他所需的依赖) > 配置相关配置文件(redis-config.properties 和applic ...

  9. perf性能调优

    工具准备 ubuntu:sudo apt-get install perf 嵌入式平台:下载源码编译 注意:编译过程中会有Auto-detectiing system feature的依赖库打印,注意 ...

  10. TensofFlow函数: tf.image.crop_and_resize

    tf.image.crop_and_resize( image, boxes, box_ind, crop_size, method='bilinear', extrapolation_value=0 ...