GET 请求不起作用,但 POST 请求正在用于数据库查询

Posted

技术标签:

【中文标题】GET 请求不起作用,但 POST 请求正在用于数据库查询【英文标题】:GET Request not working but POST request is working for database query 【发布时间】:2021-12-21 12:55:21 【问题描述】:

我使用 Express 作为后端,但由于某种原因,我的 GET 请求无法查询 Postgres 数据库。我很确定我应该使用 GET 请求来查询数据库,但似乎无法让它工作。我收到以下错误。

SyntaxError: Unexpected token < in JSON at position 0

这是 GET 请求的代码

const express = require("express");
const router = express.Router();
const pool = require("./db");

router.get("/", async (req, res, next) => 
  pool.connect((err, client, done) => 
    if (err) throw err;
    client.query("SELECT * FROM pledges", (err, ress) => 
      done();
      if (err) 
        console.log(err.stack);
       else 
        console.log(ress.rows[0]);
        res.json(ress.rows.reverse());
      
    );
  );

);

但是,如果我将其更改为 POST 请求,我会得到正确的查询并返回整个表。我做错了什么?

const express = require("express");
const router = express.Router();
const pool = require("./db");

router.post("/", async (req, res, next) => 
  pool.connect((err, client, done) => 
    if (err) throw err;
    client.query("SELECT * FROM pledges", (err, ress) => 
      done();
      if (err) 
        console.log(err.stack);
       else 
        console.log(ress.rows[0]);
        res.json(ress.rows.reverse());
      
    );
  );

);

这是我的 FETCH

  useEffect(() => 
fetch("/pledges")
  .then((response) => response.json())
  .then((data) => 
    console.log(data);
    setPledges(data);
  )
  .catch((error) => );
  , []);

使用 POST 请求获取

  useEffect(() => 
fetch("/pledges", 
  method: "POST",
)
  .then((response) => response.json())
  .then((data) => 
    setPledges(data);
  )
  .catch((error) => );
  , []);

【问题讨论】:

【参考方案1】:

服务器返回的可能不是 JSON,而是带有“

fetch(url, 
  method: "GET",
  headers: 
    "Content-Type": "application/json"
  
)

【讨论】:

以上是关于GET 请求不起作用,但 POST 请求正在用于数据库查询的主要内容,如果未能解决你的问题,请参考以下文章

我的 post route 不起作用,postman 认为是 GET 请求

发布请求在 Laravel 中不起作用

AFNetworking Post 请求不起作用

AFNetworking POST 请求不起作用?

邮递员的简单删除请求不起作用

简单的 Javascript http 请求片段但不起作用