使用axios调用时,无法请求到API
dotnet core webapi 代码如下
[HttpGet]
[EnableCors("CMSCorsConfig")]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
[EnableCors("CMSCorsConfig")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
[EnableCors("CMSCorsConfig")]
public void Post([FromBody] string value)
{
//throw new Exception("HELLO FROM POST");
}
axios 请求代码如下:
export function write (title, name) {
return axios({
url: '/values/',
method: 'post',
data: { title, name }
})
}
错误如下:
我将axios 调用另一个API时成功,
export function write (title, name) {
return axios({
url: '/values/',
method: 'get'
})
}
我用如下改写后可以成功,但无法得到值
[HttpPost]
[EnableCors("CMSCorsConfig")]
public string Post( string title,string name)
{
return title;
}
改成这样可以调用成功,但返回永远是空值
该如何调整,另外[FromBody]是什么情况下使用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
后台是form表单接收数据吗,应为你用get请求的时候是url传输,后台接收到的数据格式是类似'id=1&from=home'这样的格式,但是你用post传输的话数据格式是键值对:{ id: 1, from: "home" },后台接收不到吧。
如果后台数form表单接收的话,在axios拦截器里面使用'qs'模块`import axios from 'axios';
import { getToken } from './auth'
// import 'url-search-params-polyfill'
import qs from 'qs'
axios.defaults.timeout = 5000
axios.defaults.baseURL = process.env.BASE_API
//http request 拦截器
axios.interceptors.request.use(
config => {
},
error => {
}
);`
如果是单个string,client要写成 {“”: value}
如果是多个字段,服务端需要封装成object,再加上frombody。
按照你的写法是fromuri取得title等。
bad request问题你可以在vs调试输出具体的error看一下就知道了。