快递res.status(200).json(...)只发送json消息,如何检索状态码?

xqk2d5yq  于 2022-11-26  发布在  其他
关注(0)|答案(6)|浏览(549)

在我的数据库中成功创建新项目后,我发送:

res.status(201).json({message:"Successfully Registered"});

在我的角形前端上,我能够console.log(res)并接收:
{message: "Successfully Registered"}
1)如何在前端获得状态代码?res.status返回undefined。我得到的唯一响应是JSON。
2)确认所需API调用成功的最佳方法是什么?例如,当我登录且凭据正确时,我是否应该检查200,然后继续?或者发送一条自定义JSON消息,检查消息是否显示“成功登录”,然后继续?

41zrol4v

41zrol4v1#

有点晚了,但另一种选择是在JSON对象中包含状态:

res.status(201).json({message: "Successfully Registered", status: 201})

现在,您可以通过res.status检查前端的状态,并使用此操作继续执行另一个操作。

vmpqdwk3

vmpqdwk32#

1-你可以做res.status(200).send(“你在这里留言”);
2-我认为,在进行登录和凭据身份验证时,最好的选择是创建一个会话

req.session.user = req.body.username //username is the name attribute of the textfield

然后重定向到您喜欢任何页面/您也可以将状态设置为200

res.status(200);
s4chpxco

s4chpxco3#

我不熟悉Angular,但看了一下文档:
1.请参阅https://angular.io/api/http/Response
您需要执行以下操作:

http
    .request('example.com')
    .subscribe(response => console.log(response.status));

1.当然,检查200是很好的。通常使用REST API(从您所展示的内容推断),在登录后,您将返回一个JWT和200 OK。所有使用该JWT的后续API也将生成一个200 OK和响应主体(通常是JSON)。

bakd9h0s

bakd9h0s4#

你应该告诉你的angular http客户端你想得到响应状态。默认情况下,angular反序列化响应主体,但是你可以设置request选项。观察:“response”来完成。

postData(model: MyModel): Observable<HttpResponse<{status: string}>> {
  return this.http.post<{status: string}>(
    model, { observe: 'response' });
}

有关https://angular.io/guide/http#reading-the-full-response详细信息,请访问www.example.com。
PS:发送一个{状态:'message' }不是很有用,您可能会传回{ id }或什至什麽都不传回。

jdzmm42g

jdzmm42g5#

res.status(200).json({
    status: 'success',
    results: tours.length,
    data:{
        tour:tours
    }
});

通常情况下,Jsend是一个很好的响应选择,也是惯例。当然,你可以看到响应数据中的“状态”和数据中你想要的实际数据。

mkshixfv

mkshixfv6#

根据angular guide,我们可以在请求的选项中添加***observe***。

getforgetpassword(email: string): Observable<any> {
    const url = this.gatewayUrl + `newPasswordFor/${email}`;
    return this.http.get(url, {observe: "response"});
}

使用观察类型作为响应将给予总响应沿着请求状态,您可以在控制器的逻辑中使用它们。

相关问题