Замените "" на% 20 внутри вызова извлечения - PullRequest
0 голосов
/ 12 февраля 2020

Я знаю, что вопрос о как заменить "" (пробел) на% 20 уже задан на SO, но мне нужно знать, где я могу это реализовать - я использую React Native в качестве моего внешнего интерфейса и NodeJS (ExpressJS) в качестве моего внутреннего интерфейса, подключенного к PostgreSQL DB .

Возможно ли это использовать bodyparser urlencoded для достижения этой цели? Мне просто нужно это в 1 или 2 запроса не для всех.

Моя часть внешнего интерфейса: (вызывая это для componentDidMount)

  getData("username")
  .then(data => data)
  .then(value => {
    this.setState({username: value})
  fetch(`http://xxx.xxx.xx.xx:6969/api/hours/unlock/'${value}'`)    // replace " " mit %20 ?!?!?! 
  .then(res => res.json())
  .then(result => {
    console.log("** UuNamMe **" + this.state.username)
    console.log("Res from  UnlockTabelle : " + result)
    console.log("Res from  UnlockTabelle[0] : " + result[0])
  })
  .catch(err => console.log("ErrorLog: @unlock : " + err))
  })
  .catch(err => console.log(err))

Моя часть внутреннего интерфейса:

  static unlockUser(username, callback) {
    db.query(`SELECT * FROM unlock WHERE name = '${username}'`, (err, res) => {
      if (err.error) {
        callback(err);
      }
      callback(res);
    });
  }

  static lockUser(username, callback) {
    db.query(`DELETE FROM unlock WHERE name = '${username}'`, (err, res) => {
      if (err.error) {
        callback(err);
      }
      callback(res);
    });
  } 

router.get("/unlock/:username", (req,res) => {
  const username = req.params.username
  Hours.unlockUser(username, (err, result) => {
    if(err) {
      return res.json(err)
    }
    return res.json(result)
  })
})

router.delete("/lock/:username" , (req, res) => {
  const username = req.params.username
  Hours.lockUser(username, (err, result) => {
    if(err) {
      return res.json(err)
    }
    return res.json(result)
  })
})

Если я хочу кодировать URL для заменить "" на% 20 , где это произойдет? На моем бэкенде с bodyparser или на моем внешнем интерфейсе, если да, как это будет выглядеть?

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

Кроме того, вы можете добавить соответствующий headers к вашему fetch утверждению, как показано ниже,

fetch(`http://xxx.xxx.xx.xx:6969/api/hours/unlock/'${value}'`, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
})

Надеюсь, это поможет!

1 голос
/ 12 февраля 2020

Вы можете сделать это с помощью encodeURIComponent:

fetch(`http://xxx.xxx.xx.xx:6969/api/hours/unlock/'${encodeURIComponent(value)}'`)
0 голосов
/ 12 февраля 2020

Хорошо, я только что заметил, что это на самом деле работает, если я удаляю ' ' из '${value}' - все же лучше проверять пробелы и заменять их, потому что, кажется, это происходит как-то автоматически.

...