在网上看了小牛之路的webapi那篇文章,所以自己也想偿试一下

一,webapi简介

目前使用Web服务的三种主流的方式是:远程过程调用(RPC),面向服务架构(SOA)以及表征性状态转移(REST),其中REST模式的Web服务与复杂的SOA和RPC对比来讲显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。

ASP.NET Web API(本文简称Web API),是基于ASP.NET平台构建RESTful应用程序的框架。可以说 Web API 就是为在.NET平台下构建RESTful应用程序而生的.

二,创建webapi程序

1,直接使用vs2013使用webapi模板创建程序

2,修改默认的WebApiConfig路由配置改为

            config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

3,在直接生成的ValuesControllers文件里添加测试方法

        public HttpResponseMessage test() {
testmodel tm=new testmodel();
tm.aaa="cccc";
tm.bbb="dddd";
return Request.CreateResponse(HttpStatusCode.OK, new {
data = new {
user = tm,
amount =
}
});
} [HttpPost]
public HttpResponseMessage text2([FromBody]testpara para) {
return Request.CreateResponse(HttpStatusCode.OK, new {
data = new {
value1 = para.para1,
value2 = para.para2
}
});
} public class testpara {
public string para1 { set; get; }
public string para2 { set; get; }
}

4,使用Form表单提交

<form  id="form1" method="post" action="http://localhost:63665/api/Values/text2">
<input id="para1" name="para1" type="text"/>
<input id="para2" name="para2" type="text"/>
<input type="submit" value="提交"/>
</form>

小结:上述方式测试OK,form提交有get和post方式,由方法头[HttpPost]决定,有两种传递方式,一种是get方式,必须以url提交,一种是post可以从url提交,也可以从form表单中提取,但是必须在参数前加上[FromBody]标记,后面的参数也很有意思,如果你用string或是一般的类型,读出来是空,必须自定义一个类型,例如例子里面的testpara,而且FromBody只能使用一次,如果不定义类型,多种复杂类型,可以使用JObject,也可以用ajax方式提交,提交的时候要注意指定contentType类型为"application/json"

改下方法

        [HttpPost]
public HttpResponseMessage text2([FromBody]JObject para) {
var p = para.ToObject<testpara>();
return Request.CreateResponse(HttpStatusCode.OK, new {
data = new {
value1 = p.para1,
value2 = p.para2
}
});
}

如果是多个实体的复杂结构,我不知道有没有其它的办法,我能想到的是只有用ajax来传递封装好的json了

截几个来自酷小孩的一篇文章的图,链接ASP.NET MVC学习系列(二)-WebAPI请求

初探webapi的更多相关文章

  1. ASP.NET MVC学习系列(一)-WebAPI初探

    由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...

  2. asp.net webapi初探(一)

    本人对webapi尚没有深入研究,初次接触发现了在数据请求时的几点现象. 先切入代码 1.如果action中开头带有Get默认就是get方式,不带Get默认就是post方式 public string ...

  3. WebAPI初探

    由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...

  4. .net core WebAPI 初探及连接MySQL

    1. 前言 笔者最近跟着微软官方文档学习.net core WebAPI,但发现其对 WebAPI 连接数据库.读取数据库方面讲得不够细致明了.写此文的目的,即实现 .net core WebAPI ...

  5. .Net WebApi 初探

    实现服务层与api层共用,也就表明Service层就是api层. 关键类和接口 System.Web.Http.Dispatcher.DefaultHttpControllerSelector web ...

  6. WebApi初探之路由配置

    本文介绍了ASP.NET Web API路由HTTP请求控制器. 如果你熟悉ASP.NET MVC,Web API路由是和MVC路由非常相似的.主要差别是Web API使用HTTP方法而不是URI路径 ...

  7. ASP.NET MVC学习系列 WebAPI初探

    转自http://www.cnblogs.com/babycool/p/3922738.html 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax( ...

  8. WebApi初探之基本操作(CRUD)

    public class ProductsController : ApiController { static List<Product> products = new List< ...

  9. ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

随机推荐

  1. 控制input框输入非数字

    <input type="text" onkeyup="value=value.replace(/[^\d.]/g,'')">

  2. MLCC 电容的的 NP0 C0G 材质

    MLCC 电容的的 NP0 C0G 材质 随手记一下. MLCC 中最稳定的材质 NP0 C0G,NP0 和 C0G 是相同的,只是不同的产商不同的名字而已. 注意中间的是 0 不是 英文字母 O,虽 ...

  3. centos安装yum源

    网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到.具体设置方法如下 ...

  4. spark gateway引发:跟踪Cloudera安装服务异常日志跟踪

    spark gateway是用于接收cloudera管理的应用:可以上报数据,不影响正常使用.启动gateway失败,我觉得可能是因为配置问题? 这个问题可能比较深,因为我通过查看日志(clouder ...

  5. JQ选择器大全

    jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个 ...

  6. Caused by: java.lang.IncompatibleClassChangeError: Implementing class

    Caused by: java.lang.IncompatibleClassChangeError: Implementing class 可能是导入的jar包重复. 尤其在Maven引用中,请查看是 ...

  7. UE4材质初探

    转自:http://www.unrealchina.net/portal.php?mod=view&aid=233 UE4的材质表面上看起来很简单,可是到了用的时候却总是没有办法实现好的效果. ...

  8. 【转】Rails中Bootstrap的安装和使用

     转自:http://blog.csdn.net/lissdy/article/details/9195651   眼看着前端攻城师们都开始使用Bootstrap创作网页,于是也想学着在最近正在学习的 ...

  9. select *和select 全部

    select *和select 全部字段 在查询上效果是一样的,速度也是一样的. 不过理论上来说select *反而会快点. 因为 1.select 全部字段在数据传输上消耗会更多,如果几百个字段这个 ...

  10. mysql应用基本操作语句(转)

    二.库操作 1..创建数据库 命令:create database <数据库名> 例如:建立一个名为xhkdb的数据库 mysql> create database xhkdb; 2 ...