【问题标题】:Get parameters from URL with ampersand使用 & 符号从 URL 获取参数
【发布时间】:2020-04-09 15:59:26
【问题描述】:

问题:如何正确地从带有 & 符号的 URL 中获取参数?

上下文: 我试图弄清楚为什么 iTunes Store Webservice 的结果在删除 amp; 时会返回不同的数据。我正在使用这个差异工具:https://www.diffnow.com/compare-urls

原网址:

https://itunes.apple.com/search?term=star&country=au&media=movie&all

让我更困惑的是 url 中的 all 值。根据iTunes Store Webservice 的文档,它可以是attributeentity

但无论如何,我仍然得到不同的结果。重申一下,

原网址:

https://itunes.apple.com/search?term=star&country=au&media=movie&all

为以下各项返回不同的数据:

a. https://itunes.apple.com/search?term=star&country=au&media=movie&attribute=all
b. https://itunes.apple.com/search?term=star&country=au&media=movie&entity=all
c. https://itunes.apple.com/search?term=star&country=au&media=movie&all

【问题讨论】:

  • 涉及哪些语言?
  • 我猜是的,我提出这个问题的唯一目的是消除我的困惑。 ://

标签: html itunes http-get


【解决方案1】:

您可以创建一个小助手并使用URL 构造函数来获取表示由参数定义的 URL 的对象。

从这个对象中,我们将获得search 属性,它是查询字符串,并将& 替换为&

function getItunesParameters(url) {
  const { search } = new URL(url);
  const parsedQuery = search.replace(/&/g, '&');

  return parsedQuery;
}

getItunesParameters('https://itunes.apple.com/search?term=star&country=au&media=movie&all');
// => "?term=star&country=au&media=movie&all"

如果之后您可以轻松处理,您可以选择返回一个对象

function getItunesParameters(url) {
  const { search } = new URL(url);
  const parsedQuery = search.replace(/&/g, '&');

  return parsedQuery
    .slice(1)
    .split('&')
    .reduce((acc, query) => {
      const [key, value] = query.split('=');
      return { ...acc, [key]: value || '' };
    }, {});
}

getItunesParameters('https://itunes.apple.com/search?term=star&country=au&media=movie&all'); //?
// => {term: "star", country: "au", media: "movie", all: ""}

祝你好运!

【讨论】:

  • 谢谢,但我相信这并不能解决我的困惑。你是说用& 替换& 会得到相同的结果吗?
  • 再一次,语言将决定如何去做,因为每种语言都有不同的功能。
  • @EternalHour 我认为语言无关紧要,您可以在浏览器中尝试此操作。现在我认为它们实际上产生了相同的结果,但排列方式不同。如果没有更好的答案,我可以选择 Indgalante 的答案作为答案。
  • @Glenn 所以你会收到& 和其他时候& 对吗?
  • 没有。我只是感到困惑。我得到了一个在线评估测试,说我应该使用这样的 URL 而不是别的。我只是想确保我得到正确的结果。
猜你喜欢
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2011-05-26
  • 1970-01-01
相关资源
最近更新 更多