如何在NestJS中使用HttpModule发布表单数据

问题描述

我正在尝试从Instagram API获取访问令牌。我想将正文作为表单数据发送。这是我的代码。这是行不通的。但在邮递员中效果很好。

async getAccesstokenByCode(code: string): Promise<string> {

    const baseUrl = config.get('authorize.baseUrl');
    const clientId =  config.get('basic.clientId');
    const clientSecret = config.get('basic.clientSecret');
    const grantType = config.get('basic.grant_type');
    const redirectUri = config.get('basic.redirect_uri');

    const url = `${baseUrl}/oauth/access_token`

    const form = new FormData();
    form.append('client_id',clientId);
    form.append('client_secret',clientSecret);
    form.append('grant_type',grantType);
    form.append('redirect_uri',redirectUri);
    form.append('code',code);


    try {
        const response = await this.httpService.post(url,{ data: form },{  headers: form.getHeaders() }).toPromise();
        return response.data;
    } catch (error) {
        console.log(error);
    }
}

如何使用nestJS HttpModule正确发送帖子数据?

解决方法

这是我的工作代码:

  async getAuthToken() {
    const url = this.configService.get<string>('AUTHTOKEN_URL');
    var bodyFormData = new FormData();
    bodyFormData.append('SCOPE',this.configService.get<string>('SCOPE'));
    bodyFormData.append('EMAIL_ID',this.configService.get<string>('EMAIL_ID'));
    bodyFormData.append('PASSWORD',this.configService.get<string>('PASSWORD'));

    const response = await this.httpService.post(
      url,bodyFormData,{ headers: bodyFormData.getHeaders() }
    ).toPromise();
    console.log(response.data);
    return response.data;
  }

在您的情况下,第二个参数不是json只是数据

,

我不得不手动格式化数据。我不确定如何在 NestJS 中正确地做到这一点。我还没有找到像 qs 这样的模块,我会在 NodeJS 中使用。

const data = `client_id=${clientId}&client_secret=${clientSecret}&grant_type=${grantType}&redirect_uri=${redirectUri}&code=${code}`;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...