【问题标题】:can only post to post method in asp.net core webapi只能在asp.net core webapi中发布到发布方法
【发布时间】:2017-08-02 10:37:42
【问题描述】:

我创建了非核心 webapi 项目来与移动应用程序交互。例如,如果我创建了一个名为 Data 的控制器,它有一个名为 Search 的方法,如下所示。该项目已配置为发送和接收 json 数据。

[HttpPost]
public Searchresult search(SearchQuery s)
{
   // code to search
    return sr; //object of type Searchresult
}

我可以使用邮递员通过以下网址向此方法发送发布请求 http://localhost/api/Data/search

同样,我可以在控制器内部创建其他函数并使用路由'/api/[controller]/[action]'调用它们。

我不能在 asp.netcore web api 项目中做同样的事情。路由是控制器级别的,即'/api/[controller]',每次我发布时只点击 post 方法。按照以下方式实施int eh。当我发布到'http://localhost/api/Data'时它会被执行

[HttpPost]
public string Post([FromBody] testclass t)
{
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}";
}

当我发布到“http://localhost/api/Data/test”时,以下代码永远不会执行

    [HttpPost]
    public string test([FromBody] testclass t)
    {
        return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}";
    }

【问题讨论】:

  • 这不是 Core Api 的“正常”行为,因此您的路线很可能有问题或提供的代码未涵盖的其他问题。通过坚持您遇到问题的特定场景(而不是对您认为问题所在的抽象解释)并发布您的实际代码,您将获得更好的运气,因为通常,通过创建虚拟示例代码时,您通常会消除或以其他方式掩盖您在真实代码中面临的问题。
  • 实际上这是我的实际代码。我创建了一个虚拟项目来测试核心 web api,以便我可以开始实施实际项目。

标签: asp.net json http-post asp.net-core-webapi


【解决方案1】:

这很可能是因为您的控制器不了解您的路线之间的差异。您需要像这样明确定义路由:

[HttpPost("post")]
public string Post([FromBody] testclass t)
{
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}";
}

[HttpPost("test")]
public string Test([FromBody] testclass t)
{
    return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}";
}

然后发给他们。

【讨论】:

  • Forgotten 发布了这个。那么上面的解决方案确实有效。
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2022-01-24
  • 2021-03-24
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
相关资源
最近更新 更多