繁体   English   中英

多个 url 变量 async/await axios

[英]multiple url variable async/await axios

可能这是一个非常愚蠢的问题,我是 Node.js 和 javascript 的新手,所以如果问题没有正确解释或答案很简单,请原谅我......

我正在尝试通过 url 发送 2 个变量...当我只发送 1 个变量 (artist=${term}) 时一切正常,但我真的很困惑如何通过 url (&artist) 发送 2 个变量=${term1}&专辑=${term2})

到目前为止,我一直在处理这段代码,其中 1 个变量运行良好......但我不知道如何向请求添加第二个或第三个变量:

文件 1:“./services/albumInfo.js”

import { BRV_API } from '../../config';
import axios from 'axios';
import dotenv from 'dotenv';

const ALBUM_INFO = 'method=album.getinfo';
dotenv.config();

const doRequest = async (url) => {
    return await axios.get(`${BRV_API}/${url}&api_key=${process.env.API_KEY}&format=json`);
};

export const infoAlbum = async (term) => {
    return await doRequest(`?${ALBUM_INFO}&artist=${term}`);
};

文件 2:“./repositories/albumInfo.js”

import { infoAlbum } from '../repositories/albumInfo';
import status from 'http-status';

export const albumInfo = async (req, res, next) => {
    try {
        const { query } = req;
        
        const { data } = await infoAlbum(query.name);
        
        const response = data;

        res.status(status.OK).send(response);

    } catch (error) {

        next(error);

    }
    
};

我知道我的问题出在代码的这一部分(我猜)

export const infoAlbum = async (term) => {
    return await doRequest(`?${ALBUM_INFO}&artist=${term1}&album=${term2}`);
};

我一直在搜索,我已经看到了一些解决方案, 比如这个,但我只是不明白这些解决方案或如何应用我的代码(抱歉,我对此很陌生)

有没有好心人可以帮助这个新手? (如果还可以解释解决方案的原因,对于理解,将是惊人的!!)

提前致谢!!

axios 提供了可以自定义添加的参数如下

const your_url = process.env.URL
const infoAlbum = await axios.get(your_url,{
               params: { 
                    artist: term,
                    album: term2,
                    api_key: process.env.API_KEY,
                    format:'json'
               }
          })

console.log(infoAlbum.data.args)

注意:your_url 没有更多参数。

所以,

我找到了一个非常难看的解决方案,但到目前为止是有效的,如果有人有更好的选择,知道会令人惊讶:

文件 1:repositories/albumInfo.js,我刚刚添加了控制台(根据 @Alex028502 建议),以了解代码返回的内容:

import { BRV_API } from '../../config';
import axios from 'axios';
import dotenv from 'dotenv';

const ALBUM_INFO = 'method=album.getinfo';
dotenv.config();

const doRequest = async (url) => {
    const fullurl = `${BRV_API}/?${ALBUM_INFO}${url}&api_key=${process.env.API_KEY}&format=json`;
    console.log('full url is', fullurl);
    return await axios.get(fullurl);
};

export const infoAlbum = async (term) => {
    return await doRequest(`&${term}`);
};

文件 1:services/albumInfo.js:我更改了 'infoAlbum' 的行为以从他这边发出请求:

import { infoAlbum } from '../repositories/albumInfo';
import status from 'http-status';

export const albumInfo = async (req, res, next) => {
    try {
        const { query } = req;

        console.log(query);
        
        const { data } = await infoAlbum('artist=' + query.artist + '&album=' + query.album);
        
        const response = data;

        res.status(status.OK).send(response);

    } catch (error) {

        next(error);

    }
    
};

我知道这可能不是解决问题的最好方法,但到目前为止我所拥有的......关于如何捕获 url 请求的第二个或第三个参数然后添加它们的任何其他更好的选择到最终网址?

最好的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM