【问题标题】:web api, routing issue with my post methodweb api,我的post方法的路由问题
【发布时间】:2017-01-10 16:49:08
【问题描述】:

我的 Web api 控制器路由有问题。我已经制作了可以正常工作的 GET 方法,但是现在,我尝试了一些 POST 并且路由似乎很糟糕。 我有一个正面和Angular2。在这里,你可以看到对 webapi 的调用:

 retour = this._http.post("http://localhost:5000/api/Particulier/add", _particulier, options)
        .map(postResult)
        .catch(this.handleError);

这是我的 web api 方法:

    [Route("api/[controller]/")]
public class ParticulierController : Controller
{

    [...]

    [HttpPost("add")]
    public async Task<bool> Add([FromBody]Particulier particulier)
    {
        var result = await _particulierService.Create(particulier);
        return result;
    }

    [...]

}

这很简单,但不起作用。 Chrome 说我的 url 不存在。我在同一个控制器中有 GET 方法,它们可以工作。

你能帮我吗?

谢谢,

【问题讨论】:

  • 不起作用的情况不多。有没有例外。请求返回的状态码是什么?
  • 确认你使用的asp.net版本。您发布的代码适用于 asp.net-core,但您使用 asp.net-web-api 标记了您的帖子。
  • 这是一个带有 Web API 模板的 ASP.net Core Web 应用程序 (.net Core)。框架 4.6.1.
  • 提交请求时,chrome 控制台(网络选项卡)中没有显示任何请求。问题可能与 Agular2 http 服务有关。但没有错误

标签: c# web-services angular asp.net-core-mvc asp.net-web-api-routing


【解决方案1】:

Add([FromBody]Particulier particulier) 方法可能与您的请求不匹配,因为缺少为 Particulier 参数指定的不可为空的属性。或者,反序列化请求可能存在问题。

如果缺少属性不是问题,我建议使用 Content-Type: text/json 标头尝试它。

retour = this._http({
        url: 'http://localhost:5000/api/Particulier/add',
        method: "POST",
        data: _particulier,
        headers: {'Content-Type': 'text/json'}
}).success(function(data, status, headers, config) {
    // map post result (data var)
});

【讨论】:

  • 我正在使用 application/json 但 text/json 效果不佳。但如果我的 Typescript 对象必须完全匹配 C# 对象,这是正常的。我的 C# Particulier 和我的 TS Particulier 有一些相同的参数,但不是全部……你认为这是问题所在吗?
  • 您能通过 Chrome 开发工具之类的工具查看请求吗?除非 TS Particulier 对象缺少 intDateTime 等在 Particulier 中定义的不可为空的属性类型,否则这应该不是问题。
  • 我尝试了一个简单的操作。我的控制器想要一个字符串参数调用“test”,我发布一个像这样的简单对象:{“test”:“toto”}。但是没有调用控制器。我不明白。这是我第一次使用 Web API,但是当我在 MVC 应用程序中使用 Jquery 发出 post 请求时,我没有问题。
【解决方案2】:

好的,解决了。在未订阅 Angular 服务之前,该请求不会执行。

谢谢大家

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2014-11-27
    • 2013-08-30
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多