【问题标题】:I am getting error "No HTTP resource was found that matches the request URI"我收到错误“未找到与请求 URI 匹配的 HTTP 资源”
【发布时间】:2020-08-24 08:41:24
【问题描述】:

请求网址:

/api/Test/Retrieve/14012638/?14012647

端点:

[Route("Retrieve/{firstid}/{secondid?}")]       
public async Task<TestAPI> Retrieve(long firstid, long secondid)

【问题讨论】:

  • 使用像wireshark或fiddler这样的嗅探器并检查响应的状态。一个好的响应应该是 200 OK。您必须得到其他东西并且下划线代码没有给出确切的错误号。错误编号将有助于确定如何解决问题。
  • 我猜你已经声明了 api/test。 this可以帮忙吗?
  • 它甚至没有点击 api
  • 您能提供更多代码吗?尤其是类属性。谢谢

标签: c# asp.net-core asp.net-core-webapi


【解决方案1】:

最好将路由放在控制器级别,将 HTTP 动词放在操作级别。

根据您的要求,您可以执行以下操作。我假设您正在执行GET 操作。

[HttpGet("Retrieve/{firstid}/{secondid?}")]    
public async Task<WellsTradeAccountsInformation> Retrieve(long firstid, long secondid) { … }

如果你的控制器的路由是api/Test,那么你可以这样称呼它:

GET /api/Test/Retrieve/14012638/14012647

GET /api/Test/Retrieve/14012638

由于第二个参数是可选值类型,如果不传递默认为0。

【讨论】:

  • 在某些情况下我们不需要传递第二个参数并且是可选的。有什么方法可以使请求类型:/api/Test/Retrieve/14012638/?14012647
  • [HttpGet("Retrieve/{firstid}/{secondid?}")] 公共异步任务 Retrieve(long firstid, long secondid)
  • @TestforAngular 我可以使用我在答案中提到的路线正确获得响应,请您分享您正在尝试的路线。
  • @TestforAngular 作为第二个参数提到的可选参数'?' [HttpGet("Retrieve/{firstid}/{secondid?}")] 如果您不想像这样 GET /api/Test/Retrieve/14012638' 那样传入路由,则可以忽略第二个参数。我尝试了提琴手,它对两个 api 路由都给出了成功的响应
  • GET /api/Test/Retrieve/14012638/?14012647 应该与 [Route("Retrieve/{firstid}/{secondid?}")] public async Task Retrieve(long firstid , long secondid = 0) 问题是 secondid 始终设置为零,即使在将值作为第二个参数传递之后。如何重写代码以接受来自 API 的第二个值
猜你喜欢
  • 2017-06-28
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多