#angular #rest #fastapi #http-status-code-422 #http-parameters
Вопрос:
У меня есть этот URL-адрес в бэкэнде, и мне нужно передать c1 как параметр, c1-это только пример, этот метод включает или отключает пользователя и возвращает «ок».
http://127.0.0.1:8000/admin/enable_disable_account?name=c1
значение берется из кнопки
<div *ngFor='let userInfo of users'>
<ul class="list-group">
<li class="list-group-item">username -> {{userInfo["username"]}}</li>
<li class="list-group-item">email -> {{userInfo["email"]}}</li>
<li class="list-group-item">enable/disable -> {{userInfo["enable"]}}</li>
</ul>
<button class="btn btn-primary" (click)="setValor(userInfo['username'])">Enable/Disable</button>
</div>
Метод компонента для управления этим событием щелчка
setValor(username): void {
console.log("click")
this.adminServ.updateStateUser(username)
.subscribe(data => {
console.log(data)
},
err => {
console.log("error")
console.error(err)
})
}
И метод в сервисе
public updateStateUser(username): Observable<any> {
let params = new HttpParams()
.append('name', username)
return this.http.post('http://127.0.0.1:8000/admin/enable_disable_account', params)
}
и у меня есть эта ошибка, в чем проблема?
Я копирую здесь метод бэкенда, я не знаю, важно ли найти проблему, это делается с помощью FastAPI
@router.post("/enable_disable_account")
async def enable_disable_account(name: str, current_user: User = Security(get_current_user, scopes=["admin"])):
result = await admin_db.enable_disable_account(name)
if result:
return JSONResponse(status_code=status.HTTP_200_OK,
content='ok')
Ответ №1:
this.http.post('http://127.0.0.1:8000/admin/enable_disable_account', params)
эта строка неверна.
Angular
post
вторым параметром метода http-клиента является body
, а третьим параметром является options
.
когда вы хотите установить query
и передать params
, вам нужно передать в качестве третьего параметра. а также вы должны отправлять в качестве объекта не просто HttpParams
. Ссылка на API углового Http-клиента
this.http.post('http://127.0.0.1:8000/admin/enable_disable_account',null ,{
params: params
})