是否有一种动态方式来检索JSON数据集所需的url参数?

时间:2018-10-27 05:20:36

标签: json

例如,此山地自行车网站https://www.mtbproject.com/data的可用API,可以根据您的请求接收山地自行车道的JSON数据。但是,为了为要创建的API调用创建数据集,我似乎不得不费劲地收集所有URL参数。在这种情况下,是否有更有效的方法来做到这一点?或者只是这样?

1 个答案:

答案 0 :(得分:1)

我建议您使用axios库进行Ajax请求。
您可以将params设置为这样的对象:

axios.get("https://www.mtbproject.com/data/get-trails", {
  params:{
   lat:40.0274,
   lon:-105.2519,
   maxDistance:10,
   key:'YOUR_KEY_HERE'
  }
}).then(console.log, e => console.log(e))
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

如果您不想将此美丽的库应用到您的项目中,则可以尝试使用 纯javascript URL接口。请记住,IE不支持此接口,您可以为此浏览器应用一些polyfill使其起作用。
DOCS

var requestUrl = new URL('https://www.mtbproject.com/data/get-trails')
requestUrl.searchParams.set('lat', 40.0274)
requestUrl.searchParams.set('lon', -105.2519)
requestUrl.searchParams.set('maxDistance', 10)
requestUrl.searchParams.set('key', "YOUR_KEY_HERE")

console.log(requestUrl.toString())

// you can even make your own wrapper for this

function MyURL(url, params = {}){
  
  this._url = url
  this._params = params
  
  this.toString = () => {
    var url = this._url
    var searchParams = new URLSearchParams()
    
    for(var key in this._params){
      searchParams.set(key, this._params[key])
    }
    var stringSearchParams = searchParams.toString().length > 0 ? '?' + searchParams.toString() : ''
    return url +  stringSearchParams
  }

}

var myUrlTest = new MyURL('https://www.mtbproject.com/data/get-trails', {param1:'test', param2: 'test2'})

console.log(myUrlTest.toString())

您可以找到很多用于管理查询的库。 例如this

无论如何将这样的问题发布到您的代码中都是很好的。我想知道我是否正确回答了您的问题,我认为使用某些代码会更直接。

干杯!