初探webapi

在网上看了小牛之路的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 = 10
                }
            });
        }

        [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请求

时间: 2024-10-28 16:34:16

初探webapi的相关文章

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

由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了. 经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉.特别是Razor语法.Linq表达式等的结合运用. 为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很

WebApi初探之路由配置

本文介绍了ASP.NET Web API路由HTTP请求控制器. 如果你熟悉ASP.NET MVC,Web API路由是和MVC路由非常相似的.主要差别是Web API使用HTTP方法而不是URI路径来选择Action的.你也可以使用MVC的路由配置风格来配置Web API路由,当然本文不是来介绍ASP.NET MVC的. 路由表 在ASP.NET Web API,控制器是一种处理HTTP请求的类.控制器的公共方法被称为动作方法或简单的动作.当Web API框架接收请求时,它将请求发送到一个动作

asp.net webapi初探(一)

本人对webapi尚没有深入研究,初次接触发现了在数据请求时的几点现象. 先切入代码 1.如果action中开头带有Get默认就是get方式,不带Get默认就是post方式 public string GetUsers0(string id) { List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>; //返回json字符串 return JsonConvert.SerializeOb

WebAPI初探

由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了. 经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉.特别是Razor语法.Linq表达式等的结合运用. 为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很

.net core WebAPI 初探及连接MySQL

1. 前言 笔者最近跟着微软官方文档学习.net core WebAPI,但发现其对 WebAPI 连接数据库.读取数据库方面讲得不够细致明了.写此文的目的,即实现 .net core WebAPI 的 GET.POST 方法访问数据库,并输出结果. 2. 开发准备 2.1 操作系统 Windows 10 / Windows 7 2.2 .net core sdk .net core 2.2 下载地址:https://dotnet.microsoft.com/download 2.3 开发工具

ASP.NET MVC学习系列 WebAPI初探

转自http://www.cnblogs.com/babycool/p/3922738.html 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetUser() : 也可以用$.ajax({type:"get"}) 方式,正确的获得了返回数据: 二.传递一个参数的Get请求 通常我们需要传递参数只需要指定ajax方法的data属性

webapi方式

随笔 - 112  文章 - 0  评论 - 334 ASP.NET MVC学习系列(二)-WebAPI请求 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

ABP 初探 之基于EasyUI的CURD

ABP 初探 之基于EasyUI的CURD 结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最新技术集合,就加入了 ABP架构设计交流群 134710707,一起探讨.学习与进步. ABP的技术文档全是英文资料,不过现在不用担心了,群里的热心朋友已翻译成能看的懂语言了,详情 ABP 源代码地址 https://github.com/aspnetbo