如何解决react 和 ASP.NET Core 之间的路由
我有一项任务,我必须修复错误并创建一些新功能。我一直在为 React 和 ASP.NET Core 之间的路由而苦苦挣扎。
我在启动文件中的端点是这样的
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",pattern: "{controller}/{action}/{id?}");
});
控制器中的一些方法如下所示:
[ApiController]
[Route("[controller]")]
public class FileController : ControllerBase
{
private readonly ILogger<FileController> _logger;
private readonly IFileRepository _fileRepository;
public FileController(ILogger<FileController> logger,IFileRepository fileRepository)
{
_logger = logger;
_fileRepository = fileRepository;
}
[HttpGet]
public Task<List<FileDetails>> Get()
{
return _fileRepository.GetFileDetailsAsync();
}
[HttpGet]
public async Task<FileDetails> GetDetailedFileView(int id)
{
FileDetails fileDetails = new FileDetails();
if (String.IsNullOrEmpty(id.ToString()))
{
fileDetails = await _fileRepository.GetDetailedFileView(id);
}
return fileDetails;
}
[HttpGet]
public async Task<IActionResult> Delete(FileDetails fileDetails)
{
if (fileDetails is Object)
{
fileDetails = await _fileRepository.DeleteFileDetailsAsync(fileDetails);
}
return (IActionResult)fileDetails;
}
在反应中它看起来像
<Route path='/file-list' component={FileList} />
它只有在我使用时才有效
[HttpGet]
public Task<List<FileDetails>> Get()
{
return _fileRepository.GetFileDetailsAsync();
}
但从我收集到的只有 Task Action/IAction 方法应该在控制器中?
我已经搜索了几个小时,但仍然无法解决如何从后端正确路由此应用程序并避免在反应中路由或使其匹配,否则会出错,因为无法构建 json 或错误路径已分配。请帮忙。
解决方法
控制器路径
由于您有 [Route("[controller]")]
且控制器名为 FileController
,因此您当前的控制器路径为 /file
如果您需要通过 /file-list
等不同路径调用 API,您可以将其更改为 [Route("/file-list")]
通过 id 获取
如果您想通过请求 /file/5
像这样向 GetDetailedFileView 添加 [Route("{id:int}"]
来获取特定记录
[HttpGet]
[Route("{id:int}"]
public async Task<FileDetails> GetDetailedFileView(int id)
{
FileDetails fileDetails = new FileDetails();
fileDetails = await _fileRepository.GetDetailedFileView(id);
return fileDetails;
}
删除
使用 [HttpDelete]
而不是 [HttpGet]
对 DELETE HTTP 动词进行操作
[HttpDelete]
public async Task<IActionResult> Delete(FileDetails fileDetails)
{
if (fileDetails is Object)
{
fileDetails = await _fileRepository.DeleteFileDetailsAsync(fileDetails);
}
return (IActionResult)fileDetails;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。