Web 中的自定义路由 Api 2 以使用 angular 应用程序调用

Custom route in Web Api 2 to call with angular app

所以我设置了 Web Api 2 并从 Angular 5 进行了 restful 调用。 400 错误。有人可以透露一点光吗?谢谢

Web API 端:

[Route("api/ViewAllRecords/GetApprovalRecords/{ upn }")]
public IQueryable GetViewAllRecordsForMgrApproval([FromBody]string upn)
{
    var set = db.ViewAllRecords.Where(record => record.ApproverUPN == 
     upn).AsQueryable();
    return db.ViewAllRecords;
}

Angular 边:

  GetRecordForApproval(upn) {
  return this.http.get(environment.apiUrl + '/ViewAllRecords/GetApprovalRecords', { params: {
      upn : upn
    }});
}

相关操作的定义存在一些问题。

[FromBody] 无法处理 HTTP GET 请求,因为它们没有 BODY

//GET api/ViewAllRecords/GetApprovalRecords/upn_value_here
[HttpGet]
[Route("api/ViewAllRecords/GetApprovalRecords/{upn}")]
public IQueryable GetViewAllRecordsForMgrApproval(string upn) {
    var set = db.ViewAllRecords.Where(record => record.ApproverUPN == upn).AsQueryable();
    return db.ViewAllRecords;
}

其次,您在定义 URL 的路由模板中有 upn,但客户端未调用与模板匹配的 URL。

更新从客户端调用的URL

GetRecordForApproval(upn) {
    var url = environment.apiUrl + '/ViewAllRecords/GetApprovalRecords/' + upn;
    return this.http.get(url);
}