收到邮递请求404错误:邮递员

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了收到邮递请求404错误:邮递员相关的知识,希望对你有一定的参考价值。

我试图向邮递员提出邮寄请求,但我收到404错误。SyntaxError: Unexpected token n in JSON at position 4<br> &nbsp; &nbsp;at JSON.parse.我已经添加了 Content-Type: application/json 头,并在原始标签中定义了json体,这是url。http:/localhost:8000apisignup。...我不能进行这个帖子请求,也不能在浏览器中访问应用程序,因为我收到的是 cannot GET /api/signup.

enter image description here

我怎么能解决这个问题?

控制器用户.js

const User = require('../models/user')
const { errorHandler } = require("../helpers/dbErrorHandler")

exports.signup = (req, res) => {
    console.log("req.body", req.body)
    // signs up new user
 const user = new User(req.body)
 user.save((err, user) => {
if(err) {
    return res.status(400).json({
        err: errorHandler(err)
    })
}
res.json({
    user 
 })
 })
}

app.js

const express = require('express')
const mongoose = require('mongoose')
const morgan = require('morgan')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')

require('dotenv').config()

// import routes
const userRoutes = require('./routes/user')

// app
const app = express()

// connect db - first arg is url (specified in .env)
mongoose.connect(process.env.DATABASE, {
useNewUrlParser: true,
useCreateIndex: true
}).then(() => console.log('DB connected'))

// middlewares 
app.use(morgan('dev'))
app.use(bodyParser.json())
// used to save users credentials
app.use(cookieParser())


// routes middleware
app.use('/api', userRoutes)

const port = process.env.PORT || 8000

app.listen(port, () => {
    console.log(`Server is running on port ${port}`)
})

modelsuser.js

const mongoose = require('mongoose')
const crypto = require('crypto')
const uuidv1 = require('uuid/v1')

const userSchema = new mongoose.Schema ({
...
}, {timestamps: true})



userSchema.methods = {
    encryptPassword: function(password) {
        if (!password) return '';
        // hashes password
        try {
            return crypto.createHmac('sha1', this.salt)
            .update(password)
            .digest('hex')
        } catch (err) {
            return ''
        }
    }
}

module.exports = mongoose.model("User", userSchema)

路由用户.js

const express = require('express')
const router = express.Router()

const { signup} = require('../controllers/user')

router.post('/signup', signup)

module.exports = router
答案

404表示NOT Found。

可能是您的URL或方法有误

以下是你可以尝试诊断的内容。

  1. 检查服务器是否正在运行
  2. 检查你正在访问的端口和URL。
  3. 检查邮递员的方法 POST 和URL。
  4. 检查路由、路由文件,并与邮递员的URL进行匹配
另一答案

这好像是两个不同的问题,对于POST请求,错误好像是你的JSON有效载荷中有一个无效的字符串,你的应用程序无法读取和解析。

第二个主要是由于路由没有找到,没有看你的 ./routes/user 文件,似乎有两种可能。

  1. 你有一个嵌套的路由 /user/.... 如果是这样,请尝试通过以下方式访问你的api /api/user/signup 而不是 /api/signup
  2. 你没有为你创建一个GET路由 signup 路径。通常情况下,注册是POST路径而不是 GET.

如果你能提供源代码的话,那将是最好的。./routes/user.js 我们才能正确回答这个问题。

另一答案

404错误是一种HTTP状态码,意味着你试图到达的网站页面在他们的服务器上找不到。要明确的是,404错误表示虽然服务器本身是可以到达的,但显示错误的具体页面却无法到达。

确保你的索引是正确的,你的本地服务器是正常运行的。

以上是关于收到邮递请求404错误:邮递员的主要内容,如果未能解决你的问题,请参考以下文章

PUT 请求 404 未找到错误邮递员? Node.js 快递

在改造中收到错误代码 400 错误请求,但适用于邮递员

从邮递员检查时发现404页面未找到错误

Ruby Rails在HTTP GET请求中找不到404

MVC Post 请求始终返回 IIS 错误 500,但适用于邮递员

JWT 认证成功,但是邮递员返回 404