Angular 2 POST JSON到C#API

时间:2017-10-23 16:56:25

标签: c# json angular api post

晚安社区,

我在使用Angular 2 POST方法将数据发布到C#Api时遇到问题。实际上我需要向API发送一个JSON对象。以下是作为端点的API POST方法。

[HttpPost]
public Boolean Update(BoRole role, Guid accessToken)
{
    CheckUserSuperadmin(accessToken);

    string JsonContent = Request.Content.ReadAsStringAsync().Result;

    var roleEntity = BaseDependencies.RoleManager.GetRoleById(role.Id);
    roleEntity.Name = role.Name;
    roleEntity.AuthorizedThreshold = role.AuthorizedThreshold;

    BaseDependencies.RoleManager.UpdateRole(roleEntity);

    return true;
}

以下是我的Angular 2服务,使用POST方法。

// Update the Role
updateRole(role: Role, accessToken: string): any {  
    const body: any = JSON.stringify(role);
    const headers = new Headers({'Content-Type': 'application/json'});
    const options = new RequestOptions({ headers: headers });

    const url = this.serverUrl + '/api/Role/Update?role=' + body + '&accessToken=' + accessToken;

    return this.http.post(url, body, options).map((res: Response) => res.json());
}

为了更好地解释,我正在尝试将JSON对象发送到此API,但每当我尝试POST到API时, role 对象仍然为null,从未尝试以这种方式POST数据。有可能吗?

由于

1 个答案:

答案 0 :(得分:0)

更改Api只获得一个人获得

[HttpPost("Add")]
        public async Task<IActionResult> Post([FromBody]AddRequest value)

在我的情况下,班级

  

addRequest设置

拥有我需要的所有正文结构,在你的情况下创建一个C#可以自动化的类(相同名称),其余的是C#中的历史记录

在Angular

  

const url = this.serverUrl +'/ api / Role / Update?role ='+ body +   '&amp; accessToken ='+ accessToken;

将其更改为

  

const url = this.serverUrl +'/ api / CONTROLLERNAME';

C#将检测到这是一个Post Request并将其映射到正确的Http Call