IDE 版本:Visual Studio 2017 15.9.7
asp.net core 版本 2.1.1
本文档说明需在
asp.net core webAPI学习笔记(一)项目搭建
的基础下进行
前端使用的是jquery 的ajax
GET请求
-
无参请求
前台代码$.get('https://localhost:44388/api/values', function(res){ console.log(res) ; });
后台代码
// GET api/values [HttpGet] public OkObjectResult Get() { return Ok(new { status = 1, msg = "get list request" }); }
-
有参请求
单个参数
$.get('https://localhost:44388/api/values/' + 6, function(res){ console.log(res) ; });
// GET api/values/5 [HttpGet("{id}")] public OkObjectResult Get(int id) { return Ok(new { status = 1, msg = "get single request:" + id }); }
多个参数
方式一
$.get('https://localhost:44388/api/values/GetBy2Params', {param1: 666, param2:777}, function(res){ console.log(res) });
[HttpGet("GetBy2Params")] // 前台请求的方法名,可以与函数名不同 public OkObjectResult Get(string param1, string param2) { return Ok(new { param1, param2 }); }
方式二
$.get('https://localhost:44388/api/values/GetBy2Params/666/777', function(res){ console.log(res) });
[HttpGet("GetBy2Params/{param1}/{param2}")] public OkObjectResult Get(string param1, string param2) { return Ok(new { param1, param2 }); }
POST请求
在这里需要注意一个问题
.net core 2.1及以上版本在创建项目自动构建代码时,会自动添加一个[ApiController]属性
添加属性后,post请求获取不到参数,具体原因参照
https://www.cnblogs.com/sheldon-lou/p/9495377.html
-
基本类型参数请求
前台代码
$.ajax({ url:"https://localhost:44388/api/values", type:"post", dataType:"json", data:{value: 'mes'}, success:function(res){ console.log(res); $("#res").text(res.msg); } });
后台代码
// POST api/values [HttpPost] public OkObjectResult Post(string value) { return Ok(new { status = 1, msg = "create value:" + value }); }
-
模型参数请求
前台代码$.ajax({ url:"https://localhost:44388/api/values", type:"post", dataType:"json", data:{name: 'mes', price: 66}, success:function(res){ console.log(res); $("#res").text(res.msg); } });
后台代码
//Book类 public class Book { public string name { set; get; } // 必须为读写的实体类,否则参数会出现null的情况 public string price { set; get; } } // POST api/values [HttpPost] public OkObjectResult Post(Book book) { return Ok(new { status = 1, msg = "create value:" + book.name }); }
-
复杂参数请求
$.ajax({ url:"https://localhost:44388/api/values?value=6", type:"post", dataType:"json", data:{ name:2, price:3 }, success:function(res){ console.log(res); } });
[HttpPost] public OkObjectResult Post(string value, Book book) { return Ok(new { value, book = new { book.name, book.price } }); } public class Book { public string name { set; get; } public string price { set; get; } }
或者
$.ajax({ url:"https://localhost:44388/api/values/6", type:"post", dataType:"json", data:{ name:2, price:3 }, success:function(res){ console.log(res); } });
[HttpPost("{value}")] public OkObjectResult Post(string value, Book book) { return Ok(new { value, book = new { book.name, book.price } }); } public class Book { public string name { set; get; } public string price { set; get; } }