我尝试从React触发一个ASP控制器。我测试了很多不同的东西。但都不起作用。有时我会在浏览器中收到路由不存在的消息(我尝试了很多路由)或“没有路由匹配位置“/DataController/alldata”。最后一次我收到消息“启用验证第一个证书”。(来自Postman)
当前代码:
ASP控制器
[Authorize]
[ApiController]
[Route("[controller]")]
public class DataController : Controller {
...
[HttpGet]
[Route("alldata")]
public IActionResult GetData(){
var data = new {key1="test1", key2="test2"};
return Ok(data)
}
字符串
React Code(fetch)
export const GetDataset = function () {
const fetchData = async() => {
try {
const result = await fetch('https://localhost:port/DataController/alldata')
const jTest = await result.json();
}catch(error){
.....
}
}
fetchData()
}
型
React组件调用
componentDidMount() {
GetDataset();
}
型
3条答案
按热度按时间bfnvny8b1#
当您在路由中使用
[controller]
时,这意味着控制器类的名称 * 减去单词Controller*。所以你的URL应该是这样的:
https://localhost:port/Data/alldata
。6yjfywim2#
你可以尝试把它添加到你的program.cs文件中:
字符串
请注意,它必须按照这个顺序。
u5i3ibmn3#
我测试了很多不同的东西。但都不起作用。有时我会在浏览器中得到路由不存在的消息(我尝试了很多路由)或“没有路由匹配的位置“/DataController/alldata”。
好吧,根据你共享的代码片段和描述,我已经尝试重现你的问题,我能够击中控制器端点并得到相应的响应。
尽管如此,你的代码看起来很好,我只是省略了
[Authorize]
,因为我不需要它来执行我的测试场景。下面是我从react端点调用API的步骤:
控制器:
和你的差不多:
字符串
Program.cs文件:
在program.cs文件中,我配置了CORS设置:
型
React测试代码:
我在react中使用了以下方法进行快速测试:
型
输出量:
x1c 0d1x的数据
的
**注:**如需参考,请refer to this example。