我正在尝试向我的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 });
}
}
}
我试图将身体指定为以下内容:
我试图将我的模型指定为通用对象(没有类型)。 我尝试使用和不使用 Content-Type 标头执行调用。
以前没有一个似乎有效。不会调用API操作,也不会返回任何错误。
如果有可能,我想执行请求只指定 model ,但无论如何我会很高兴,如果它有效:)
我错过了什么?
修改
我现在读到角度2中的http请求是“懒惰的”,所以他们需要订阅者(订阅)才能工作。
感谢您的帮助