NodeJS 如何在express中重定向到post请求

ej83mcc0  于 2023-05-22  发布在  Node.js
关注(0)|答案(2)|浏览(202)

我正在创建一个登陆页面,当点击时,会自动触发Facebook身份验证流程。但是,我无法自动从索引重定向到signup路由。如何在express中从GET请求重定向到POST请求?

router.get('/', function(req, res) {
        //redirect to login function
    });

    router.post('/signup', passport.authenticate('signup', {
      //Log user in on facebook
    }));
o7jaxewo

o7jaxewo1#

从GET请求重定向到POST请求是不可能的。
你所能做的就是将一个POST请求重定向到一个POST请求,但即使这样有时也很棘手,但你永远无法重定向到一个与原始请求不同的方法(除非这个不同的方法是GET)。
通常,您可以通过发送301 Moved Permanently或302 Found HTTP状态代码来进行重定向。这两种方法在实践中通常都像303 See Other一样工作,并发出GET请求。
有一个307临时重定向(从HTTP/1.1开始),不允许更改HTTP方法。这可以用于将POST重定向到POST,但请注意,它明确不允许更改方法,因此您不能使用它将GET重定向到POST(甚至POST重定向到GET,否则可以使用简单的301或302响应)。
请参阅这些答案以了解更多背景:

  • 使用Express JS路由将POST重定向到POST
  • 请求跟随重定向而不发送数据
wfauudbj

wfauudbj2#

const express= require('express');
const cors=require("cors")
const mongoose=require('mongoose');
const bodyParser=require('body-parser');
const dotenv=require('dotenv');
dotenv.config();

DB=process.env.DB_url;
mongoose.connect(DB,{useNewUrlparser:true});`enter code here`

const ProductsSchema= new mongoose.Schema({
       productname:{
       type:String,
       require:true
       },
       price:{
      type:String  
      },
       category:{
       type:String
   },
image:{
    type:String
}

})

const Products= mongoose.model("product",ProductsSchema);
const app=express();
app.use(cors());
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false}))

app.get("/product",async (req,res)=>{
     try {
    const products = await Products.find({});
     res.send(products)
    } catch(err) {
      res.status(500).json({message:err}) 
   }
 })

  app.post("product",(req,res)=>{
   try {
    let product={
        productname:req.body.productname,
        price:req.body.price,
        category:req.body.category,
        image:req.body.image
    }
    product.save();
    res.send(product)
} catch (err) {
    res.status(500).json({message:err})
}

})

app.delete("/product/:id", async (req,res)=>{
try {
    const productId=req.params.id
const product1= Products.findByIdAndDelete(product)
res.send(product1)
    
} catch (err) {
    res.status(404).json({message:"not exist"})
}

})

const PORT=process.env.PORT
 app.listen(PORT,()=>{
    console.log(`Server is up on PORT:${PORT}`);
 })

相关问题