Angular 2和.NET Core Web Api:http post不会调用API

时间:2017-03-09 14:13:08

标签: json angular asp.net-web-api http-post angular-http

我正在尝试向我的WebAPI控制器执行发布请求,但无法调用我的操作。

这是行动:

    [HttpPost("about")]
    public async Task<IActionResult> PostAbout([FromBody] PostAboutBindingModel model)
    {
        if (model == null || !ModelState.IsValid)
            return BadRequest(ModelState);

        var about = new About
        {
            Text = model.Text,
            Date = model.Date,
            Images = _jsonSerializer.Serialize(model.Images)
        };

        _context.Abouts.Add(about);
        await _context.SaveChangesAsync();

        return Created($"/api/about/{about.Version}", about);
    }

PostAboutBindingModel 只有三个属性:文字,日期和图片。

这是我执行API调用的angular2代码段:

let model: IAbout = <IAbout>{
    date: new Date(),
    images: [],
    text: "test"
}
let opts = jwtAuthorization();
opts.headers.append("Content-Type", "application/json");

return this.http.post("/api/about", model, opts)
    .map((response: Response) => console.log("TEST", response.json()))
    .catch(this.handleError);

jwtAuthorization 只需添加授权标题:

export function jwtAuthorization(): RequestOptions {
    "use strict"

    if (localStorage.getItem("auth")) {
        // create authorization header with jwt token
        let auth: IAuth = getAuth(JSON.parse(atob(localStorage.getItem("auth"))));
        if (auth && auth.access_token) {
            let headers: Headers = new Headers({ "Authorization": auth.token_type + " " + auth.access_token });
            return new RequestOptions({ headers: headers });
        }
    }
}

我试图将身体指定为以下内容:

  • 模型
  • {model}
  • {model:model}
  • JS​​ON.stringify(模型)
  • JSON.stringify({model:model})

我试图将我的模型指定为通用对象(没有类型)。 我尝试使用和不使用 Content-Type 标头执行调用。

以前没有一个似乎有效。不会调用API操作,也不会返回任何错误。

如果有可能,我想执行请求只指定 model ,但无论如何我会很高兴,如果它有效:)

我错过了什么?

修改

我现在读到角度2中的http请求是“懒惰的”,所以他们需要订阅者(订阅)才能工作。

感谢您的帮助

0 个答案:

没有答案