angular - 使用 HTTPparams 422(不可处理的实体)和 FastAPI 在 Angular 中出错

标签 angular rest fastapi http-status-code-422 http-parameters

我在后端有这个 url,需要像参数一样传递 c1,c1 只是一个例子, 此方法启用或禁用用户并返回“ok”

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)
  }

我有这个错误,问题是什么? enter image description here

后台的方法我照搬过来,不知道是否重要,发现问题, 这是用 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')

最佳答案

this.http.post('http://127.0.0.1:8000/admin/enable_disable_account', params)

此行不正确。

Angular http客户端post方法第二个参数是body,第三个参数是options

当你想设置query并传递params时,你需要作为第三个参数传递。并且您还必须作为对象发送,而不仅仅是 HttpParamsAngular Http Client API reference

this.http.post('http://127.0.0.1:8000/admin/enable_disable_account',null ,{
params: params
})

关于angular - 使用 HTTPparams 422(不可处理的实体)和 FastAPI 在 Angular 中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69262116/

相关文章:

javascript - Javascript 导入和 Angular 导入有什么区别?

security - 使用 REST API 登录 TeamCity 服务器,无需在 url 中传递凭据

.net - 如何使用 JSON 将 TimeSpan 对象传递给 WCF 方法

python-3.x - 从父级继承时如何更改 pydantic 小于或等于验证

python - 如何在FastAPI中间件中修改响应后的内容长度?

python - FastAPI + SQLModel 开发中的简洁架构原则

javascript - Angular 2 Webworkers Http 未捕获( promise ): not implemented

javascript - 使用 typeScript 转换日期对象属性数组

javascript - Angular 2 从 http get 请求构建对象

java - jersey 2.6 jackson 2.3 和 map 中的复杂键