例如,此山地自行车网站https://www.mtbproject.com/data的可用API,可以根据您的请求接收山地自行车道的JSON数据。但是,为了为要创建的API调用创建数据集,我似乎不得不费劲地收集所有URL参数。在这种情况下,是否有更有效的方法来做到这一点?或者只是这样?
答案 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
无论如何将这样的问题发布到您的代码中都是很好的。我想知道我是否正确回答了您的问题,我认为使用某些代码会更直接。
干杯!