#angular #http #url #post #rest
Вопрос:
Я пытаюсь передать три параметра с помощью Angular для своего бэкенда с помощью метода post. Все три параметра должны быть целыми числами, по одному числу в каждом. Это просто не хочет работать. Вот что я получил до сих пор:
data.service.ts
bookRoom(user_id, room_id, date_id) {
return this.http.post('http://127.0.0.1:8000/api/bookRoom/',user_id '/' room_id '/' date_id);
}
bookroom.component.ts (передача параметров в data.service.ts)
bookRoom() {
this.dataService.bookRoom(1,2,4).subscribe(res => {
console.log(res);
})
}
Я хочу, чтобы все было так просто, просто возьмите мои три параметра и поместите их в мой метод post. Есть ли какой-нибудь способ заставить это работать таким образом?
Мой URL-адрес должен выглядеть, например:
http://127.0.0.1:8000/api/bookRoom/1/2/4
Я был бы очень рад, если бы вы могли показать мне, как это реализовать в Angular. Большое спасибо!
Проблема с передачей строки:
Комментарии:
1. почему бы тогда просто не поместить их в URL-адрес с интерполяцией?
return this.http.post(`http://127.0.0.1:8000/api/bookRoom/${user_id }/${room_id} /${date_id}`)
2. О, хорошо, это 1, а не 4, так что вы можете передать все, что хотите, в качестве тела или просто оставить его пустым-например:
return this.http.post(`http://127.0.0.1:8000/api/bookRoom/${user_id }/${room_id} /${date_id}`, {})
3. Ха-ха рад, что смог помочь: -) Я также предоставлю его в качестве ответа, чтобы вы могли отметить его как решенный
4. Вы можете использовать охранников маршрута: angular.io/guide/router#preventing-unauthorized-access . Но я предлагаю вам задать еще один вопрос с подробностями 🙂
5. Большое тебе спасибо, мой друг! Ты действительно потрясающая. Да благословит господь.
Ответ №1:
Для этого вы можете использовать интерполяцию строк (с пустым телом, поскольку это требуется для метода post) — например:
return this.http.post(`http://127.0.0.1:8000/api/bookRoom/${user_id }/${room_id} /${date_id}`, {})
Комментарии:
1. Определенно решил мою проблему, супер и полезный ответ!