微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

除了使用ifresponse.status === 201以外,还有没有那么硬编码的替代方法?

如何解决除了使用ifresponse.status === 201以外,还有没有那么硬编码的替代方法?

我正在使用Fetch API检索应用程序的一些外部数据。这是我的代码

  fetch("http://127.0.0.1:8000/dictionary/define",{
    method: "POST",body: JSON.stringify(values),})
    .then(response => {
      if (response.status === 201) router.push("/");
    })
    .catch(error => alert(error));

我想知道我的if (response.status === 201)条件是否有一种更干净/更硬编码的替代品来表示一切正常?

解决方法

我认为这段代码非常好。您正在寻找201响应,因此您就可以这样做。

如果您只想获得成功的答复,请使用response.ok

我考虑对您现有代码进行的唯一清除工作是将所有响应状态代码存储在一个常量中,这样它就更易于阅读。

类似这样的东西:

export const HttpStatusCodes = Object.freeze({
  Created: 201,});

然后您可以改而response.status === HttpStatusCodes.Created),这对我来说在眼睛上要容易得多。

,

我认为这更简洁明了,您正在单行执行逻辑,并检查201状态并重定向,因此几乎所有的提示都很好。你很好,可以成为伴侣:)

,

Response接口的ok只读属性包含一个布尔值,指示响应是否成功(状态范围为200-299)。

e.g. var myOK = response.ok;

// refactor with response.ok
fetch("http://127.0.0.1:8000/dictionary/define",{
    method: "POST",body: JSON.stringify(values),})
    .then(response => {
      if (response.ok) router.push("/");
    })
    .catch(error => alert(error));

https://developer.mozilla.org/en-US/docs/Web/API/Response/ok 参考链接在这里。

如果您仍然不需要特定的状态代码本身,仅需要成功,那么这将非常适合您的用例。无论状态码是什么,您都可以检测到请求是否成功

,

如果您知道在200到299范围内的任何状态码都可以成功响应,可以使用drain()https://developer.mozilla.org/en-US/docs/Web/API/Response/ok

如果您明确要求输入201状态代码,则没有这种快捷方式,您需要按照显示的步骤检查\r\n

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。