(二)Asp.net web api中的坑-【http get请求中的参数】
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协议包的包体中。
相关文章
- Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
- Asp.Net Core_初探
- Asp.Net_单点登录
- Asp.Net_Mvc4_ActionResult应用
- ASP.NET MVC铵钮Click后下载文件
- 8 种提升 ASP.NET Web API 性能的方法
- ASP.NET数据库连接字符串总结
- ASP.NET MVC和Web API中的Angular2 - 第2部分
- asp.net 配置 web.config 禁用VS2013自带的Browser Link功能
- ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
- ASP.NET MVC Filter过滤机制(过滤器、拦截器)
- ASP.NET Core 微服务初探[1]:服务发现之Consul
- ASP.NET Web API 如何通过程序控制返回xml还是json
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 [转]
- ASP.NET Web API(MVC API)
- ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件
- ASP.NET第一次访问慢的完美解决方案(MVC,Web Api)
- ASP.NET Core Restful Web API 相关资源索引
- ASP.NET Core中使用GraphQL - 第七章 Mutation
- (一)Asp.net web api中的坑-【找不到与请求 URI匹配的 HTTP 资源】
- ASP.NET MVC 控制器激活(二)
- 微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web Service开发实战
- ASP.NET Core发送HTML格式邮件(Email)方法及示例代码
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
- IoC在ASP.NET Web API中的应用
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- 通过扩展让ASP.NET Web API支持JSONP
- 了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
- 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf