AstraDB GET 请求失败

Posted

技术标签:

【中文标题】AstraDB GET 请求失败【英文标题】:AstraDB failed GET request 【发布时间】:2021-11-05 15:27:51 【问题描述】:

我一直在开发 TikTok 克隆应用程序。所以我用 Astra DB 创建了我的数据库,并在一个函数文件夹中设置了两个函数来测试我的帖子是否正常工作。我正在使用 netlify dev 来测试应用程序。但是当我重定向 http://localhost:8888/.netlify/functions/addData 我收到这个失败的获取请求错误

Request from ::1: GET /.netlify/functions/addData
Error: Request Failed: [object Object]
Stack Trace: Request failed with status code 401
    at axiosRequest (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:126:11)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async AstraClient._request (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:199:22)
    at async AstraClient.put (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:263:12)
    at async AstraCollection._put (D:\tiktokclone\node_modules\@astrajs\collections\src\collections.js:69:22)
    at async Object.exports.handler (D:\tiktokclone\functions\addData.js:17:9)
Response with status 500 in 231 ms.

我完全不明白是什么原因造成的。我的 .env 文件夹中的所有凭据都是正确的。这是我用来发出请求的代码

const  createClient  = require("@astrajs/collections");

const collection = "posts";

exports.handler = async function (event, context, callback) 


  const astraClient = await createClient(
    astraDatabaseId: process.env.ASTRA_DB_ID,
    astraDatabaseRegion: process.env.ASTRA_DB_REGION,
    applicationToken: process.env.ASTRA_DB_APPLICATION_TOKEN,
);

  console.log(astraClient)
  console.log(collection)
  console.log('Hello')

  const posts = astraClient
    .namespace(process.env.ASTRA_DB_KEYSPACE)
    .collection(collection);

  try 
    await posts.create("a post", 
      title: "my first post",
    );

    return 
      statusCode: 200,
    ;
   catch (e) 
    console.error(e);
    return 
      statusCode: 500,
      body: JSON.stringify(e),
    ;
  
;

【问题讨论】:

【参考方案1】:

我找到了解决办法。出于某种原因,我试图使用应用程序令牌调用 API,它给了我 401 错误。当我使用用户名和密码时,它起作用了。

 const astraClient = await createClient(
  astraDatabaseId: process.env.ASTRA_DB_ID,
  astraDatabaseRegion: process.env.ASTRA_DB_REGION,
  username: process.env.ASTRA_DB_USERNAME,
  password: process.env.ASTRA_DB_PASSWORD,

);

用户名是客户端 ID,密码是客户端密码。发生此错误是因为与 REST API 和 Document API 略有混淆。 Astra DB 使用应用程序令牌来验证文档 API,而 REST API 使用客户端 ID 和密码。

【讨论】:

以上是关于AstraDB GET 请求失败的主要内容,如果未能解决你的问题,请参考以下文章

Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500

webpack devServer代理跨域get请求成功,post请求失败403 Forbidden

请求失败,axios.get 中的状态码为 403(禁止)

GET 请求预检在浏览器中失败(使用 React 框架)

file_get_contents HTTP 请求失败

GET 请求在邮递员中有效,但在 Axios 中失败