如何在http get请求中更改URL中的路径名

时间:2019-07-04 10:04:20

标签: node.js express url pathname

我正在执行一些用户ID的GET请求,我确实需要按ID获取该用户个人资料 app.get('/ userID),但我不想在我的Web URL中看到ID,但不想看到用户名,该怎么办?我也在使用Reactjs,我不知道在这种情况下是否必须更改后端或前端。 感谢您的帮助!

我的代码-后端:

 const router = express.Router()

 router.get('/:userId', (req, res, next) => {
 let userID = req.params.userId

   .....
})

我的代码-前端:

componentDidMount() {

let theURL = window.location.pathname.split('/')[1]
let userID = theURL.replace(theURL, '/hellotest')

getUserProfile(userID).then(
  response => {
    this.setState({
      userName: response.data.userName,
     ....
    })
  },
  error => {
    this.setState({
    ....
    })
  }
 )
}

我已经尝试过使用window.location.pathname.replace(theURL,'/ hellotest'),并且无法正常工作。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

req.originalUrl保留了原始请求URL,允许您自由重写req.url以进行内部路由

app.use('/admin', function (req, res, next) { // GET 'http://www.example.com/admin/new'
  console.dir(req.originalUrl) // '/admin/new'
  console.dir(req.baseUrl) // '/admin'
  console.dir(req.path) // '/new'
  next()
})

您必须在动态(/:id)路线的末尾res.redirect

res.redirect( req.originalUrl.split("?").shift() );