asp.net core webAPI学习笔记(三)资源请求

IDE 版本:Visual Studio 2017 15.9.7
asp.net core 版本 2.1.1

本文档说明需在
asp.net core webAPI学习笔记(一)项目搭建
的基础下进行

前端使用的是jquery 的ajax

GET请求

  1. 无参请求
    前台代码

    $.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"
         });
     }
    
  2. 有参请求

    单个参数
    $.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

  1. 基本类型参数请求

    前台代码

    $.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
        });
    }
    
  2. 模型参数请求
    前台代码

    $.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
        });
    }
    
  3. 复杂参数请求

    $.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; }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值