webapi主要的用途就是把【指定的参数】传进【api后台】,api接收到参数,进行【相应的业务逻辑处理】,【返回结果】。所以怎么传参,或者通俗的说,http请求应该怎么请求api,api后台应该怎么写,才能准确的接收到参数。

HttpGet 请求

1、get请求,单参数

前端ajax

var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

$.get(url, para, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(string Phone)
        {
            string result = "接口通了";
            return Ok<string>(result);
        }

经调试,后端Phone="phone13880825221",传参成功。

**********************************************************************************

2、get请求,传多个参数

前端ajax

var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

$.get(url, para, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(string Phone,string UID)
        {
            string result = "接口通了";
            return Ok<string>(result);
        }

经调试,后端Phone="phone13880825221",UID="uid287572292"; 传参成功。

ps,后端参数名称,无论你是写phone,PhOne,Uid,uid,uId,你都可以接收到前端ajax请求传递的参数,这个是忽略大小写的。

**********************************************************************************

3、get请求,传实体

前端ajax

var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

$.get(url, para, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(RequestModel model)
        {

string msg = "";
            string code = "";
            string result = "接口通了";
            return Ok<string>(result);

}

经调试,RequestModel =null,纳尼?咋回事呢?来,firefox抓包,瞅一下,

嗦嘎,get请求的时候,默认是将参数全部放到了url里面直接以string的形式传递的,后台自然接不到了。!!string形式,哦,是不是很容易就想到了一个思路?把json对象序列化为json字符串,后台接收到这个json格式字符串,再反序列化成一个实体,这也是一种解决方法。

前端ajax

var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

var requestStr=JSON.stringify(para);

$.get(url, requestStr, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(string requestStr)
        {

var model= Newtonsoft.Json.JsonConvert.DeserializeObject<TB_RequestModel>(requestStr);

string msg = "";
            string code = "";
            string result = "接口通了";
            return Ok<string>(result);

}

这是一种方式,当然还有更佳,更好的方法,根据查园子里的大神的博客,知道Get请求的时候可以在参数里面加上[FromUri]即可直接得到对象。

前端ajax

var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

$.get(url, para , function () { }, "application/json");

后端

[HttpGet]
      public IHttpActionResult test([FromUri]RequestModel model)
      {
          string msg = "";
          string code = "";
          string result = "接口通了";
          return Ok<string>(result);
      }

经测试,model不为空,且能获取值。

——————————————————————————————————————————————————————

知识点:HTTP协议中get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),而post请求则是放在http协议包的包体中。

(二)Asp.net web api中的坑-【http get请求中的参数】的更多相关文章

  1. 使用 asp.net Web API 2的坑

    使用工具: Googl  浏览器+PostMan 插件 写了个  控制器 添加了个Action,结果呢?GET 方式请求没问题. POST一直,在服务器端获取不了参数...找了官方的文档 .各种雨里雾 ...

  2. 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)

    客户端js无需任何专门设置,使用通常的ajax调用即可: $.ajax({ url: '跨域URL', type: 'get', dataType: 'json', success: function ...

  3. ASP.NET WEB API 帮助文档引用单独项目中的DTO,见面上不显示字段注释问题解决办法

    StackOverFlow上的解决办法: 问题地址

  4. 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?

    在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中,我们通过自定义的HttpMessageHandler自行为ASP.NET Web API实现了针对CORS的支持, ...

  5. 使用ASP.NET Web API自带的类库实现对CORS的支持(在开发中使用这种方式)(转载)

    在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来 ...

  6. 细说Asp.Net Web API消息处理管道(二)

    在细说Asp.Net Web API消息处理管道这篇文章中,通过翻看源码和实例验证的方式,我们知道了Asp.Net Web API消息处理管道的组成类型以及Asp.Net Web API是如何创建消息 ...

  7. 剖析Asp.Net Web API中HttpController的激活

    在Asp.Net Web API中,请求的目标是定义在某个HttpController中的某个Action方法.当请求经过Asp.Net Web API消息处理管道到达管道"龙尾" ...

  8. 在ASP.NET Web API中实现CORS(跨域资源共享)

    默认情况下,是不允许网页从不同的域访问服务器资源的,访问遵循"同源"策略的原则. 会遇到如下的报错: XMLHttpRequest cannot load http://local ...

  9. [水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API

    问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合 ...

  10. [水煮 ASP.NET Web API2 方法论](1-2)在 WebForm 应用程序中添加 ASP.NET Web API

    问题 怎么样将 Asp.Net Web Api 加入到 Asp.Net Web From 应用程序中 解决方案 在 Visual Studio 2013 中,创建新的 Web From,可以直接在&q ...

随机推荐

  1. js实现图片上传实时显示

    在开发的时候经常遇到这样的需求,用户在上传图片的时候,想要看到自己上传的图片是否正确,这时候需要把用户上传的图片及时显示出来,然后等他点击上传的时候,程序再执行上传到服务器. <!DOCTYPE ...

  2. BZOJ4802 欧拉函数 (Pollard-Rho Miller-Robin)

    题目 求大数的欧拉函数φ\varphiφ 题解 Pollard-Rho 板子 CODE #pragma GCC optimize (3) #include <bits/stdc++.h> ...

  3. effective Java 第三版学习笔记

    创建对象类型的 1,静态工厂方法代替构造器 静态工厂方法有名称,不容易混乱他的作用 不必再每次调用他的时候创建实例,创建实例的代价是高的,可以重复利用缓存的对象 静态工厂甚至能返回子类对象,例如在接口 ...

  4. JavaSctipt 常用字符串 方法及使用方式

    1. charAt(x) charAt(x)返回字符串中x位置的字符,下标从 0 开始. //charAt(x) var myString = 'jQuery FTW!!!'; console.log ...

  5. guava字符串工具 Strings 校验补全 转换null和""

    public class StringsTest { public static void main(String args[]){ //1.补右全(Strings.padEnd方法) String ...

  6. Codeforces Round #600 (Div. 2) D题【并查集+思维】

    题意:给你n个点,m条边,然后让你使得这个这个图成为一个协和图,需要加几条边.协和图就是,如果两个点之间有一条边,那么左端点与这之间任意一个点之间都要有条边. 思路:通过并查集不断维护连通量的最大编号 ...

  7. 通过自定义属性获取指定checkbox是否选中

    $("input[conferid='"+conferid+"']").is(':checked'); $("input[conferid='1234 ...

  8. The backup set holds a backup of a database other than the existing ‘dbName’ database

     [Solved] System.Data.SqlClient.SqlError: The backup set holds a backup of a database other than t ...

  9. vue自定义弹框

    vue 全局自定义简单弹框 https://www.jianshu.com/p/1307329aa09e https://www.cnblogs.com/crazycode2/p/7907905.ht ...

  10. STL备忘

    STL备忘 lower_bound 查找第一个大于或等于的数,返回该数字的地址,地址减去首地址即得到数组下标(首地址下标为0) upper_bound 查找第一个大于的数 unique 去重,常用于离 ...