Пользовательский маршрут в Web Api 2 для звонка с угловым приложением - PullRequest
0 голосов
/ 13 ноября 2018

Итак, я настроил Web Api 2 и выполняю свои спокойные вызовы из Angular 5. У меня есть собственный маршрут, по которому я хотел бы позвонить, но продолжаю получать ошибку 400.Может кто-то пролить немного света.Спасибо.

Сторона веб-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;
}

Угловая сторона:

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

1 Ответ

0 голосов
/ 13 ноября 2018

У рассматриваемого действия есть несколько проблем с его определением.

[FromBody] не будет работать с HTTP-запросами GET, поскольку они не имеют тела

//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;
}

и, во-вторых, у вас есть upn в шаблоне маршрута, который определяет URL, но клиентская сторона не вызывает URL, который соответствует шаблону.

Обновление URL-адреса, вызванного с клиента

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