Asp.net web api 如何使用axios访问Web API GET方法?

Asp.net web api 如何使用axios访问Web API GET方法?,asp.net-web-api,vue.js,asp.net-core,axios,Asp.net Web Api,Vue.js,Asp.net Core,Axios,我尝试从axios调用asp.net core 2.1 webapi webapi控制器 [Route("api/[controller]")] [ApiController] [HttpsRequirement(SslRequirement.Yes)] public class GHTKController : ControllerBase { [HttpGet("GetShippingFee")] [Produces("

我尝试从axios调用asp.net core 2.1 webapi

webapi控制器

    [Route("api/[controller]")]
    [ApiController]
    [HttpsRequirement(SslRequirement.Yes)]
    public class GHTKController : ControllerBase
    {
        [HttpGet("GetShippingFee")]
        [Produces("application/json")]
        public async Task<IActionResult> GetShippingFee([FromBody]GhtkAddress address)
        {

            return Ok();
        }
    }
但是,它无法使用VueJs从axios运行,并返回状态400

import axios from 'axios'
    export default {
    async getShippingFee(address) {
      console.log(address)
        const request = await axios.get('/api/ghtk/getshippingfee', {
            pick_province: "asda"
        })
            .then(response => response)
            .catch(error => {
                console.log(error)
            });
        return request;
    },
}

您当前的动作方法参数由FromBody属性修饰。这告诉模型绑定器应该从请求主体读取数据,并在模型绑定过程中进行映射。但是,从客户端代码中,您正在进行一个GET调用,在该调用中,您的数据将作为查询字符串参数发送到请求URL中。如果你检查你的网络通话,你可以看到它如下

/api/ghtk/getshippingfee?pick_province=asda
因为您正在进行GET调用,所以应该使用FromQuery属性。FromQuery属性告诉模型绑定器从请求查询字符串读取数据并进行映射

[HttpGet("GetShippingFee")]
[Produces("application/json")]
public async Task<IActionResult> GetShippingFee([FromQuery]Profile address)
{
    return Ok(address);
}
上面的代码将进行Http POST调用,并在请求正文中发送您的数据。由于我们正在进行POST调用,请确保您的操作方法使用HttpPost属性修饰

[HttpPost("GetShippingFee")]
[Produces("application/json")]
public async Task<IActionResult> GetShippingFee([FromBody]Profile address)
{
    return Ok(address);
}
const url = '/api/ghtk/getshippingfee';

const ajaxHheaders = {
    'Content-Type': 'application/json',
};

let data = JSON.stringify({
                            pick_province: "redmond",
                            first_name: "shyju"
                          });

const request = await axios.post(url, data, {
    headers: ajaxHheaders
})
[HttpPost("GetShippingFee")]
[Produces("application/json")]
public async Task<IActionResult> GetShippingFee([FromBody]Profile address)
{
    return Ok(address);
}