Angular 7 HttpClient помещает параметры запроса, отправляя нулевые значения в конечную точку - PullRequest
1 голос
/ 28 марта 2019

У меня есть служба Angular с этим методом запроса Put:

put(peopleFieldID: number, peopleFieldName: string): Observable<number> {
let params = new HttpParams();
params = params.append("peopleFieldID", peopleFieldID.toString());
params = params.append("peopleFieldName", peopleFieldName);

return this.http
  .put<number>(this.url, { params: params })
  .pipe(catchError(this._errorHandling.handleError.bind(this)));}

Вышеуказанное относится к этой конечной точке в моем API ядра .net:

    [Authorize(Roles = "Client")]
    [Route("")]
    [HttpPut]
    public IActionResult C_Update(int peopleFieldID, string peopleFieldName )
    {
        //Make call to the proper repo method.
        return Json(_peopleFieldRepo.C_Update(peopleFieldID, peopleFieldName));
    }

Два параметра peopleFieldID и peopleFieldName всегда равны 0 и равны нулю. Я указал, что угловой интерфейс отправляет параметры правильно, но внутренний не может их распознать. У меня есть много других конечных точек, где это работает просто отлично.

1 Ответ

3 голосов
/ 28 марта 2019

Вам необходимо установить параметры запроса, используя HttpParams и передать null для полезной нагрузки, если у вас нет таких:

const params = new HttpParams()
            .set('peopleFieldID', peopleFieldID.toString())
            .set('peopleFieldName', peopleFieldName);
// if you have a payload to pass you can do that in place of null below
return this.http
  .put<number>(this.url, null, { params: params })
  .pipe(catchError(this._errorHandling.handleError.bind(this)));}
...