.Net WebApi get,post,put,delete 参数传递
webapi 这玩意传参可真鸡恶心坏我了,试了好多东西,我整理了整理,小总结了以下
Get
get的几种方式
前端请求代码
//get1
$.ajax({
url: '/api/webapitry',
type: "get",
success: function (a) {
console.log(a);
}
})
//get2
$.ajax({
url: '/api/webapitry',
type: "get",
data: { "id": 5, "name": "王五" },
success: function (a) {
console.log(a);
}
});
后台代码
public string Get()
{
return "get1";
}
public string Get(int id,string name)
{
return "get2"+id+name;
}
post( 最麻烦,有好几种方式)
1,实体模型
前台代码
let obj = {
name: "张三",
pwd: "123456"
}
$.ajax({
url: '/api/webapitry',
type: "post",
data: obj,
success: function (a) {
console.log(a);
}
});
后台代码
public string Post(user user)//传入实体模型
{
return "post1" + user.name;
}
//需要先定义个实体类
public class user {
public string name { get; set; }
public string pwd { get; set; }
}
2,键值对(这玩意的 键(key)还必须为空,要不然接不住)
前台代码
$.ajax({
url: '/api/webapitry',
type: "post",
data: {"":"李四"},
success: function (a) {
console.log(a);
}
});
后台代码
public string Post([FromBody] string name)
{
return "post2" + name;
}
3,dynamic动态类型接收(查的好像是不能在跨域中使用,非跨域可以用,具体我没试)
前台代码
$.ajax({
url: '/api/webapitry',
type: "post",
contentType: 'application/json', //这个类型要加
data: JSON.stringify({ 'name': "海伦", 'pwd': '12345' }),
success: function (a) {
console.log(a);
}
});
后台代码
public string Post(dynamic obj)
{
return "post4" + obj.name + obj.pwd;
}
4,JObject接收(后台需要处理接收的数据)
前台代码
$.ajax({
url: '/api/webapitry',
type: "post",
data: { 'name': "海伦", 'pwd': '12345' },
success: function (a) {
console.log(a);
}
});
后台代码
需要引入以下这两个命名空间
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public string Post(JObject jObject)
{
//将jobject序列化为json字符串
var jsonstr = JsonConvert.SerializeObject(jObject);
//反序列化为动态json object
var jsondata = JsonConvert.DeserializeObject<dynamic>(jsonstr);
return "post5" + jsondata.name + jsondata.pwd;
}
Put
这个我就写了两种
1
前台代码
$.ajax({
url: '/api/webapitry?id=5', //这个是url参数 id=5 可以自行更改
type: "put",
data: obj, //这个数据是formdata //obj在post的时候我付的有,不再重写
success: function (a) {
console.log(a);
}
});
后台代码
public string Put(int id,[FromBody]user user)
{
return "put1" + id + user.name + user.pwd;
}
2
前台代码
$.ajax({
url: '/api/webapitry',
type: "put",
data: obj,
success: function (a) {
console.log(a);
}
});
后台代码
public string Put(user user)
{
return "put2" + user.name + user.pwd;
}
Delete
1,参数放到url请求路径里
前台代码
$.ajax({
url: '/api/webapitry?id=8', //这里的id=8 自行更改
type: "delete",
success: function (a) {
console.log(a);
}
});
后台代码
public string Delete(int id)
{
return "delete1" + id;
}
2,使用键值对传,动态类型接收,同样的,键必须为空
前台代码
$.ajax({
url: '/api/webapitry',
type: "delete",
data: { '': 8 },
success: function (a) {
console.log(a);
}
});
后台代码
public string Delete(dynamic id)
{
return "delete2" + id;
}
如果需要源代码,可以去我博客空间里下,写的有点乱,自行整理吧