gpt4 book ai didi

mysql - Express 通过请求体发送数据但请求方法是 GET?

转载 作者:行者123 更新时间:2023-11-29 09:49:34 27 4
gpt4 key购买 nike

嘿,这是我的第一篇文章,如果我在这里做错了什么,很抱歉,但请耐心等待;)

我正在尝试使用 Express 将一些 JSON 格式的数据发送到我的 MySQL 数据库,但是每当我使用 app.get() 之外的其他内容时,它都会失败。我猜这是因为浏览器中显示的请求方法始终是 GET 但我不知道为什么。我究竟做错了什么?当我使用app.post()时,请求方法怎么会是GET?

const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');

const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'masterkey',
database: 'articelStorage'
});

const app = express();
app.use(bodyParser.json());
app.use(express.json());

//connect to db
db.connect((err) => {
if (err) {
throw err;
}
console.log('Myql connected...');
});

app.listen('3000', () => {
console.log('Server started and running on port 3000...');
});

app.get('/getOne/:code', (req, res) => {
let sql = "SELECT * FROM articels WHERE acode ='" +req.params.code+"'";
db.query(sql, (err, result) => {
if (err) throw err;
res.send(result);
});
});

app.delete('/deleteOne/:code', (req, res) => {
let sql = "DELETE FROM articels WHERE acode ='" +req.params.code+ "'";
db.query(sql, (err, result) => {
if (err) throw err;
res.send(result);
});
});

这是我得到的结果:

Cannot GET /deleteOne/DE12345678

和标题:

一般:

Request URL: http://localhost:3000/deleteOne/DE12345678
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:3000
Referrer Policy: no-referrer-when-downgrade

响应 header :

Connection: keep-alive
Content-Length: 159
Content-Security-Policy: default-src 'self'
Content-Type: text/html; charset=utf-8
Date: Thu, 07 Mar 2019 13:12:36 GMT
X-Content-Type-Options: nosniff
X-Powered-By: Express

请求 header :

Accept: text/html,application/xhtml+xml,application/xml;
q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Host: localhost:3000
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36

提前致谢。

最佳答案

我认为这里存在误解。

当您声明app.get('/getOne/:code', (req, res)=>{..})时这意味着可以通过 HTTP GET 访问该路线app.delete 类似该路线可通过请求方法 HTTP DELETE 访问

现在,当您在浏览器中打开一个网址时,它始终是 HTTP GET要求。这就是为什么 /getOne可以,但不行 delete一个。

您需要使用Postman(或curl)之类的应用程序来测试您的REST api。

如果您从客户端访问端点,请使用 axios request xmlhttprequest并将请求方法设置为您想要的。

例如,

axios({url:url, method:'delete', { data: { foo: "bar" } });// or axios.delete(..)

关于mysql - Express 通过请求体发送数据但请求方法是 GET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55045026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com