zoukankan      html  css  js  c++  java
  • 初探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请求

  • 相关阅读:
    Java中同步
    Java多线程
    Java中的instanceof关键字
    Java多态与C++中多态的实现
    Java中的接口
    Java中的抽象类
    Java单链表的实现
    Java中的内部类
    memcached telnet command
    The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF when MUST_CHANGE is ON. (Microsoft SQL Server,错误: 15128)
  • 原文地址:https://www.cnblogs.com/sky2014/p/4330423.html
Copyright © 2011-2022 走看看