首页 > 解决方案 > React Native:为什么将查询参数附加到我的 .Net API 调用会自动返回 404 错误?

问题描述

在我的 React Native 应用程序中,我试图在用 .Net 编写的 API 中访问端点。我的本地机器上有 API 代码,所以我试图通过调用fetch(127.0.0.1:5000/api/token). 这将返回 404 错误。如果我改为点击fetch(127.0.0.1:5000/),它会成功返回。在这种情况下命中的 API 代码是HomeController.cs,其中包含:

namespace InTowAPI2.Controllers
{
    [AllowAnonymous]
    [Route("/a")]
    public class HomeController : Controller
    {
        // GET api/values
        [HttpGet]
        public string Get()
        {
            return "Ok";
        }
    }
}

当我调用 时fetch(127.0.0.1:5000/),它返回“Ok”并命中我在 中设置的断点HomeController.csValuesController.cs我打电话时应该点击的另一个文件fetch(127.0.0.1:5000/api/token)包含此代码(加上它之后的更多):

namespace InTowAPI2.Controllers
{
    [AllowAnonymous]
    [Route("/api/[controller]")]
    ...
    ...

当我调用fetch(127.0.0.1:5000/api/token)时,没有命中断点ValuesController.cs,它返回 404 错误。

为了解决这个问题,我尝试做的是,因为HomeController.cs工作正常,我替换[Route("/")][Route("/api")],并拨打了fetch(127.0.0.1:5000/api). 这也返回了 404 错误。

我想知道的:

为什么点击包含[Route("/")]with的 API 代码可以fetch(127.0.0.1:5000/)工作,但修改为 hit [Route("/api")]withfetch(127.0.0.1:5000/api)会抛出 404 错误?

标签: asp.net.netreactjsapireact-native

解决方案


问题是路由。

[Route("/api/[controller]")]

此 RouteAttribute 定义将端点路由到控制器的名称。

应该命中的另一个文件 ValuesController.cs...

好像您的控制器名称是ValuesController,它将在/api/values上创建一个端点,而不是/api/token

要解决此问题,请执行以下操作之一:

  1. 将控制器的名称从 ValuesController 更改为 TokenController。
  2. 将 RouteAttribute 从 [Route("/api/[controller]")] 更改为 [Route("/api/token")]。

推荐阅读