typescript 即时状态:400尝试httppost时出现“错误请求”

sqyvllje  于 2022-11-30  发布在  TypeScript
关注(0)|答案(2)|浏览(208)

我已经找遍了所有的地方(google/stackoverflow),寻找我的代码中可能存在的错误......但是一整天都没有发现,所以现在我自己写一个问题:我的服务类中有两个几乎相同的函数,它们向我的api/后端发出post请求(后端又包含两个几乎相同的函数来接收所述请求)。400.”在我的后端/api中:
第一个
在我的服务:
第一次
以及它们的名称:
第一个
还有手边的两样东西:
第一个
(The发布的对象是从相应类的get函数中检索的同一个对象,只是lastName(用于Patient)和commentText(用于PatientComment)稍有改变)我想我的问题是:我是否遗漏了一些明显的东西?是不是Patient对象的大小太大了?同样,在我看来,在我获得状态之前,调用甚至还没有开始处理:400更新Patient时...后端的post方法甚至没有被触发-对于PatientComment来说一切都正常,我可以在后端的方法上触发一个断点,无论何时我调用端点。我已经使用Swagger和Postman测试了api,它们似乎都可以在那里工作(虽然我没有使用它们的超级经验,我猜,所以我可能错过了一些东西)。有什么想法吗?
我已经使用Swagger/Postman触发了这两个API方法,并且我已经在VS Code中调试了该过程- google'ing服务类中'catchError'提供的错误消息的每一部分:
{“头”:{“标准化名称”:{},“延迟更新”:空},“状态”:400,“状态文本”:“错误请求”,“URL”:“https://localhost:62006/api/Patients/update”,“确定”:假,“名称”:“HttpErrorResponse”,“消息”:“https://localhost:62006/api/Patients/update的Http失败响应:400错误请求”,“错误”:{“类型”:“https://tools.ietf.org/html/rfc7231#section-6.5.1“,“标题”:“发生一个或多个验证错误。",“状态”:400,“跟踪ID”:“00-f1 e88 aa 13075736 f6590 b352 c4 afe 68 f-64 f8 c787 e1 bbcc 8b-00”,“错误”:{“员工”:[“员工字段为必填字段。"],“诊所”:[“诊所字段为必填字段。"],“诊断”:[“诊断字段为必填字段。"],“患者备注”:[“患者备注字段为必填字段。"],“风险评估”:[“风险评估字段为必填字段。"]}}
然后我应用了太多的解决方案(大多数来自stackoverflow上的其他线程),甚至当它看起来像一个类似的问题时。两个调用的api地址(localhost:whatever)是相同的,绝对正确,并且为了以防万一,端点已经从后端复制/粘贴。我尝试提供预检数据({headers:{'Content-Type':“application/json”}}),使用.put而不是.post,更改端点地址设置,其他本地主机端口,JSON.stringify(editedPatient)作为主体...但没有任何效果(obv)。由于后端的断点从未触发,我唯一能够收集到的是,这是一个与前端相关的问题...但在这一点上,我几乎不确定我自己的名字:P

vdgimpew

vdgimpew1#

在错误响应中,它指出Patient类中的某些字段是必需的,因此,当它尝试将响应主体绑定到端点的editedPatient参数时,您会得到一个400错误b4,它甚至可以进入该方法。
所以我猜您最有可能遗漏了post请求正文中的一些Patient属性...

xdyibdwo

xdyibdwo2#

响应包含拒绝请求的原因:

"errors": {
    "Staff": [
        "The Staff field is required."
    ],
    "Clinic": [
        "The Clinic field is required."
    ],
    "Diagnosis": [
        "The Diagnosis field is required."
    ],
    "PatientComment": [
        "The PatientComment field is required."
    ],
    "RiskAssessment": [
        "The RiskAssessment field is required."
    ]
}

pdatePatientAsync(Patient editedPatient)中设置一个断点,并找出对象未完全填充的原因。

相关问题