繁体   English   中英

firebase POST url 400 错误请求

firebase POST url 400 bad request

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用一种非常简单的方法从我的 reactjs 应用程序向 firebase 实时数据库发布请求。 这是一个进入我的数据库的屏幕截图。 这里 blogs 下的第一个条目是用户的 UID,该用户可以创建多个博客,例如屏幕截图中的 id b1。 Friebase DB url 和示例表条目

这是我的 POST 请求代码:

const id = localStorage.getItem('uid')
 const postData = async () => {
        var num = localStorage.getItem('blogNumber')
        const resp = await fetch(
            'https://assignment-c3557-default-rtdb.asia-southeast1.firebasedatabase.app.firebaseio.com/blogs.json',
            {
             method: 'POST',
             body: {
                id: {
                    num : {
                        title: titleRef.current.value,
                        description: contentRef.current.value,
                        createdAt: new Date(),
                        isPosted: false
                    }
                }
            },
            headers: {
                'Content-Type': 'application/json'
            }
            });
            const data = await resp.json()
           localStorage.setItem('blogNumber', localStorage.getItem('blogNumber') +1)
    }

尝试点击此网址时收到 400 个错误请求

但根据这个页面,这似乎是我正在点击的正确网址

https://retool.com/blog/your-guide-to-crud-in-firebase-realtimedb-with-rest-api/

1 个回复

这里有很多问题:

  • 您没有在这里使用idnum的值,您需要将它们包装在方括号中
  • fetch API 调用的body属性应该通过JSON.stringify传递。
  • 您不应在请求正文中发布 Date 对象。 将其转换为字符串、将其转换为纯数字、使用时间戳对象或使用服务器值占位符。
  • 您的代码始终假定帖子已成功创建。 fetch API 不会因错误的状态代码而引发错误。 您应该检查状态代码以确定您想要做什么。 由于 Firebase 数据库操作通常以 JSON 响应,因此我在检查代码之前将此处的主体解析为 JSON,但是您可能应该先检查空主体。
  • 每次写入数据时,使用POST /blogs.json将覆盖整个/blogs树。 您应该更改路径或使用带有适当正文的 PATCH 请求。
const id = localStorage.getItem('uid')
const postData = async () => {
  const num = localStorage.getItem('blogNumber')
  const reqData = {
    [id]: { // <-- use square brackets for value as key
      [num]: { // <-- use square brackets for value as key
        title: titleRef.current.value,
        description: contentRef.current.value,
        createdAt: Date.now(), // <-- returns milliseconds since epoch
        isPosted: false
      }
    }
  }

  const resp = await fetch(
    'https://assignment-c3557-default-rtdb.asia-southeast1.firebasedatabase.app.firebaseio.com/blogs.json',
    {
      method: 'POST',
      body: JSON.stringify(reqData), // you need to stringify this yourself
      headers: {
        'Content-Type': 'application/json'
      }
    }
  );

  
  const data = await resp.json();

  if (!resp.ok) { // fetch API does not throw errors by itself
    const err = new Error('Unexpected status: ' + resp.status);
    err.data = data;
    err.resp = resp;
    throw err;
  }

  localStorage.setItem('blogNumber', localStorage.getItem('blogNumber')+1)
}

更新为使用更深的路径:

const id = localStorage.getItem('uid')
const postData = async () => {
  const num = localStorage.getItem('blogNumber')
  const reqData = {
    title: titleRef.current.value,
    description: contentRef.current.value,
    createdAt: Date.now(), // <-- returns milliseconds since epoch
    isPosted: false
  }

  const resp = await fetch(
    `https://assignment-c3557-default-rtdb.asia-southeast1.firebasedatabase.app.firebaseio.com/blogs/${uid}/${num}.json`,
    {
      method: 'POST',
      body: JSON.stringify(reqData), // you need to stringify this yourself
      headers: {
        'Content-Type': 'application/json'
      }
    }
  );
  
  const data = await resp.json();

  if (!resp.ok) { // fetch API does not throw errors by itself
    const err = new Error('Unexpected status: ' + resp.status);
    err.data = data;
    err.response = resp;
    throw err;
  }

  localStorage.setItem('blogNumber', localStorage.getItem('blogNumber')+1)
}
1 Google API上的400错误请求

当我向https://www.googleapis.com/adsense/v1.3/adclients/XXX/adunits?key=XXX发出请求时,我收到“ 400错误请求”错误。 这是响应: 我使用官方的PHP库,并且在开发人员控制台中一切正常。 ...

2 “ 400错误请求”为什么?

此功能是使用wxWidgets的PHP-CLI脚本的一部分,该脚本尝试将某些字段发布到LAN上的Apache2 Web服务器上。 它总是失败“ 400 Bad Request”,并且不输入“ /blog/update.php”代码。 域/主机的值(可能是此错误的关键部分)是正确的。 为什么 ...

3 发布400(错误请求)

我正在尝试提交我的表单,但是由于POST出了点问题,它一直失败。 我不确定到底是什么地方/究竟是什么导致服务器不处理请求,无论它是否与语法,请求路由等有关。我还注释掉了与文件上传有关的每一行,并注释了if(validated )声明。 因此,控制台中没有错误,但是表单提交仍然失败。 感谢您 ...

4 400 错误请求 curl php

当我从域abc.com请求方法“ POST ”到x.abc.com ================================================== ============ 这是我的 curl 请求 ...

2020-01-10 07:27:00 0 99   php/ curl
5 烧瓶 - 400 错误请求

我有这个 python 代码,它应该从 html 表单中获取数据并在 WHERE 子句中使用它: 我正在使用的模板是这个(无论如何都是模板的一部分。它不是全部): 当我尝试使用表单中的数据时,它给了我一个 但是当我使用 input() 输入数据时,它工作正常。 是什么赋予了!? 我将如 ...

6 Python Amazon Simple Product API:400错误请求

因此,我已经阅读了几篇有关该主题的文章,并尝试了他们提到的某些事情,但无济于事。 我可以肯定地说,我已经正确地授予了我的帐户对API调用的权限,但这不是问题。 我看到了有关签署对AWS搜索的请求的内容,但是我不确定是这样还是什至如何做到。 这是我的代码。 现在,我正在传递函数的 ...

7 Web api:400 错误请求

我有一个可以正常工作的 web api; 我已经用 Postman 测试过了。 但是,当从客户端应用程序进行 api 调用时,我收到 400 错误。 我不确定这里发生了什么。 这里使用 Blazor 服务器端是 api 控制器 [HttpPost] } 这是来自客户端应用程序中 Blazo ...

8 Unity Facebook:400错误请求

我使用以下代码从Facebook获取用户数据 它显示错误 您正在尝试从www流中加载数据,而该数据在下载时出现以下错误。 400错误的请求UnityEngine.WWW:get_text()c__Iterator1:MoveNext()(位于Assets / FBDesktopM ...

9 AFNetworking PUT请求错误400

我正在尝试使用AFNetworking发出PUT请求。 远程位置上有一个JSON,我想随请求更新。 我已经设法将我的对象序列化为JSON,并将其放置为NSDictionary对象: 这样,当我使用NSLog打印出容器时,我得到的正是我要发送的JSON。 然后,我尝试使用AF ...

10 400错误的请求Mailgun Laravel

我在Laravel中使用Mailgun。 我以前用Mailgun设置了我的邮件帐户,并且运行正常,但由于某种原因不得不更改它。 我遵循了相同的步骤,但之前也遵循了相同的步骤,但是不知何故它无法像以前一样工作。 我正在使用Laravel 5.0 。 我的.env文件是 我已经验证了 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM