我正在从前端向后端发送一个POST请求。我得到一个错误“错误:请求失败,状态代码为404““有问题POST到后端,端点“
我试图理解为什么post请求没有到达后端.
这是前端代码-触发onAddingNewTrade函数的组件的一部分
<div className='transaction-new-trade-container input-container-style-dash'>
<h2>Add new trade</h2>
<label>Stock symbol</label>
<input
type='text'
value={newTrade.symbol}
name='symbol'
onChange={handleInputChange}
/>
<label>Shares amount</label>
<input
type='number'
value={newTrade.amount === 0 ? '' : newTrade.amount}
name='amount'
onChange={handleInputChange}
/>
<label>Entry price</label>
<input
type='number'
value={newTrade.entryPrice === 0 ? '' : newTrade.entryPrice}
name='entryPrice'
onChange={handleInputChange}
/>
<label>Exit price</label>
<input
type='number'
value={newTrade.exitPrice === 0 ? '' : newTrade.exitPrice}
name='exitPrice'
onChange={handleInputChange}
/>
<button
className='btn-style-3'
onClick={() => onAddingNewTrade(newTrade)}
>
Add new trade
</button>
</div>
字符串
这是onAddingNewTrade函数
function onAddingNewTrade(newTrade) {
newTrade.day = utilService.getDate()
newTrade.pl = tradeService.calculatePL(
newTrade.symbol,
newTrade.amount,
newTrade.entryPrice,
newTrade.exitPrice
)
newTrade.percentage = tradeService.calculatePercentageChange(
newTrade.entryPrice,
newTrade.exitPrice
)
newTrade.timestamp = Date.now()
addTrade(newTrade)
}
型
这是addTrade函数
export async function addTrade(trade) {
try {
const savedTrade = await tradeService.save(trade)
console.log('Added Trade', savedTrade)
store.dispatch(getActionAddTrade(savedTrade))
return savedTrade // maybe no need for it - consider removing later
} catch (err) {
console.log('Cannot add trade', err)
throw err
}
}
型
这是从前端发送post请求到后端的函数
async function save(trade) {
var savedTrade
if (trade._id) {
savedTrade = await httpService.put(`trade/${trade._id}`, trade) // if trade has Id so update
} else {
console.log('sending request to backend', trade)
savedTrade = await httpService.post('/trade', trade) // if trade does not has id create add new trade
}
return savedTrade
}
型
这是来自NODE.JS中的服务器文件的贸易路线
app.use('/api/trade', tradeRoutes)
型
这是贸易路线文件
import express from 'express'
import { requireAuth } from '../../middlewares/requireAuth.middleware.mjs'
import { log } from '../../middlewares/logger.middleware.mjs'
import { getTrades, getTradeById, addTrade, updateTrade, removeTrade, addTradeMsg, removeTradeMsg } from './trade.controller.mjs'
const router = express.Router()
// We can add a middleware for the entire router:
// router.use(requireAuth)
router.get('/', log, getTrades)
router.get('/:id', getTradeById)
router.post('/trade',requireAuth, addTrade) // add new trade
router.put('/:id', requireAuth, updateTrade) // update existing trade
router.delete('/:id', requireAuth, removeTrade)
// router.delete('/:id', requireAuth, requireAdmin, removeTrade)
router.post('/:id/msg', requireAuth, addTradeMsg)
router.delete('/:id/msg/:msgId', requireAuth, removeTradeMsg)
export const tradeRoutes = router
型
这是addTrade函数
export async function addTrade(req, res) {
const {loggedinUser} = req
console.log('from front', req.body)
try {
const trade = req.body
trade.owner = loggedinUser
const addedTrade = await tradeService.add(trade)
res.json(addedTrade)
} catch (err) {
logger.error('Failed to add trade', err)
res.status(400).send({ err: 'Failed to add trade' })
}
}
型
1条答案
按热度按时间ogsagwnx1#
我把这个放在一个答案中,因为我不能在注解中使用字符串插值语法。
您已在此处安装路由器:
字符串
这意味着
tradeRoutes
中的任何内容都以/api/trade
隐式开头。这意味着:型
响应来自以下位置的
post
请求:型
所以你需要
post
来:型
put
:型
备注:可能你正在使用一个框架,它在内部将前端请求Map到
/api
,但你的标签只建议使用React和Express。