1 Вопрос: Соблюдает ли Angular Tutorial и его веб-API в памяти правильную семантику PUT?

вопрос создан в Thu, May 2, 2019 12:00 AM

Я читал учебник по Angular и заметил использование встроенного веб-API . Все классно, за исключением кода в метод PUT heroes , который вызывает у меня дискомфорт.

Вот оно:

private heroesUrl = 'api/heroes';
...

/** PUT: update the hero on the server */
updateHero (hero: Hero): Observable<any> {
  return this.http.put(this.heroesUrl, hero, httpOptions).pipe(
    tap(_ => this.log(`updated hero id=${hero.id}`)),
    catchError(this.handleError<any>('updateHero'))
  );
}

Следует отметить, что запрос PUT выполняется на this.heroesUrl, а не на this.heroesUrl/hero.id. Насколько я понимаю, при реализации CRUD через http PUT должен быть сделан для URL ресурса.

Правильно ли я понимаю PUT?

В приведенном выше коде это работает, потому что id для героя для обновления - hero.id, который является частью объекта hero, отправляемого через PUT

Для этой простой модели героя базовый API генерируется автоматически с помощью In- пакет памяти Web API для учебника.

Если это так, генерирует ли In-memory Web API правильную семантику PUT?

    
0
1 ответ                              1                         

Я согласен с вами в соответствии с википедией определением.

this.heroesUrl - это ссылка на коллекцию героев . Определение википедии для таких ресурсов:

  

Замените все представления ресурсов-членов ресурса коллекции на представление в теле запроса или создайте ресурс коллекции, если он не существует.

Это означает, что при вызове this.heroesUrl мы хотим заменить коллекцию другой коллекцией. Это неправильно, потому что они обновляют только одного героя и выбирают того, кто смотрит на тело.

Было бы лучше использовать this.heroesUrl/${hero.id} , в этом случае мы обновляем конкретный ресурс. Определение Википедии для этого:

  

Замените все представления ресурса-члена или создайте   ресурс-член, если он не существует, с представлением в   тело запроса.

Вы можете открыть отчет об ошибке в репозитории угловых github они обычно довольно быстро меняют такие вещи /дают обоснование, почему они так поступили.

    
0
2019-05-02 15: 10: 22Z
источник размещен Вот