博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二)Asp.net web api中的坑-【http get请求中的参数】
阅读量:5362 次
发布时间:2019-06-15

本文共 2684 字,大约阅读时间需要 8 分钟。

  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协议包的包体中。

转载于:https://www.cnblogs.com/RandyField/p/7144776.html

你可能感兴趣的文章
一天一记之2012-12-21 页面用模板页的时候,页面上的服务器端按钮注册click事件,点击按钮进不去click方法。...
查看>>
Check-Point-Security-Gateway-BYOL-R77.30-041.161
查看>>
数据结构-用C++实现一个二叉树,递归方法中序遍历
查看>>
预处理、const、static与sizeof-C++中const有什么作用(至少说出3个)
查看>>
Git远程操作详解
查看>>
【week3】四人小组项目—东师论坛
查看>>
leetcode 78. 子集 JAVA
查看>>
多级联动的另类实现 - 纯忽悠贴
查看>>
做菜时你绝对不知道的123个门道
查看>>
受理状态修改为网上申报
查看>>
Spring Cloud服务间调用鉴权
查看>>
centos系统-java -jdk 环境配置
查看>>
JVM调优之服务内存超过阈值报警
查看>>
Android实例-手机安全卫士(三十)-根据指令完成相应操作一(报警音乐和GPS追踪)...
查看>>
消息队列和堆栈
查看>>
结对作业1.1
查看>>
OpenCV学习笔记(8)——图像平滑
查看>>
模型性能提升操作
查看>>
catch that cow
查看>>
我想要的智能电视一键播放体验
查看>>