[英]Express node.js api app.post does work for / but not with /path
我是 Node.js 的新手,並試圖制作一個 API,它將在 sql 服務器中執行 CRUD 操作。 對我來說,問題是我可以獲取數據但無法發布它,並得到錯誤“無法獲取 /”。 我知道關於這個主題有類似的問題,但對我沒有任何作用,所以我想我的代碼可能有不同類型的錯誤。 任何幫助將不勝感激,並以某種方式挽救我的生命。 另外,這是我關於stackoverflow的第一個問題,對可能出現的錯誤深表歉意..
這是server.js
const sql = require('mssql'); const express = require('express'); const bodyParser = require('body-parser'); var port = process.env.port || 5000; const sqlConfig = require('./connection/connect') const app = express(); app.use(express.json()); // json desteklemesi için app.use(express.urlencoded({ extended: true })); app.get("/test", (req, res, next) => { new sql.ConnectionPool(sqlConfig).connect().then(pool => { return pool.query('select * from tblProfile') }).then(result => { res.send(result); }) }) app.post('/test', (req, res) => { let name = req.query.name; let lastname = req.query.lastname; let email = req.query.email; let password = req.query.password; let sql = "INSERT INTO tblProfile(name,lastname,email,password) VALUES(? ? ? ?)"; conn.query(sql, [name, lastname, email, password], (err, result) => { if (err) throw err; res.write("inserted."); res.end(); }); app.listen(port, () => { console.log("working: " + port) }) });
這是connect.js
var sqlConfig = { server: '192.168.1.2', database: 'profile', user: 'username', password: 'user', }; module.exports = sqlConfig;
發生這種情況是因為您沒有響應或向該路由發送任何內容
所以如果你想擺脫錯誤 Run
app.get('/', (req,res)=>{
res.send('hello world')
}
但是如果你想發送一個 static 文件到路由創建一個文件夾調用 public *注意它可以是任何東西
並輸入
var path = require('path');
app.use(express.static(path.join(__dirname, 'public')));
然后您可以訪問目錄中的代碼
至於寫作,我認為你應該試試這個
app.post('/test', (req, res) => {
let name = req.body.name;
let lastname = req.body.lastname;
let email = req.body.email;
let password = req.body.password;
let sql = "INSERT INTO tblProfile(name,lastname,email,password VAUES(? ? ? ?)";
conn.query(sql, [name, lastname, email, password], (err, result) => {
if (err) throw err;
res.write("inserted.");
res.end();
});
將查詢更改為 body 因為您安裝了 body-parser
快速查看您的代碼,我能看到的唯一問題是您提交數據的查詢。 在您的查詢語句中,我在要輸入數據庫的變量后添加了一個右括號,並對單詞 Values 進行了錯字更正。 我還更改了從 req.query 中檢索數據的方式,以對其進行解構,並簡化代碼。 根據我看到的所有其他內容,以及您能夠從數據庫中獲取數據的事實,這應該可以正常工作。 如果沒有,我建議在 post 查詢中插入一些console.log()
語句,以查看可能出現問題的位置以及原因。 例如,您可以運行console.dir(req.query);
在您的發布路線中查看實際來自 req 的數據並確保它們都在那里。 如果缺少某些內容,則查詢將不會實際執行。 如果這不起作用,請告訴我,以及您所做的任何控制台日志中的信息,我會再看一下。
const sql = require('mssql'); const express = require('express'); const bodyParser = require('body-parser'); var port = process.env.port || 5000; const sqlConfig = require('./connection/connect') const app = express(); app.use(express.json()); // json desteklemesi için app.use(express.urlencoded({ extended: true })); app.get("/test", (req, res, next) => { new sql.ConnectionPool(sqlConfig).connect().then(pool => { return pool.query('select * from tblProfile') }).then(result => { res.send(result); }) }) app.post('/test', (req, res) => { //console.dir(req.query); let {name, lastname, email, password} = req.query; let sql = "INSERT INTO tblProfile(name,lastname,email,password) VALUES(? ? ? ?)"; conn.query(sql, [name, lastname, email, password], (err, result) => { if (err) throw err; res.write("inserted."); res.end(); }); app.listen(port, () => { console.log("working: " + port) }) });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.