Problemi nell'utilizzo della tua API con Node.js

Ciao a tutti!

Non sono sicuro di quale categoria sia quella giusta, sentitevi liberi di ricategorizzarla. Per cominciare, grazie per l’aiuto con lo script Python che fa la stessa cosa dello script in Node che sto scrivendo attualmente :clap:t3:. Quindi sto cercando di effettuare una richiesta API per eseguire la query dell’Esploratore Dati, ricevere la risposta e semplicemente visualizzare il numero che ne ottengo. Mentre il mio codice Python funziona. È qui:

# Import

import requests
import json

# Variabili d'ambiente

ENDPOINT = 'https://community.myCompanyName.com/admin/plugins/explorer/queries/73/run'
API_KEY = '<api_key>'
API_USERNAME = '<my_username'

# Funzioni principali

def send_request(endpoint):

    headers = {'Content-Type': 'multipart/form-data', 'Api-Key': API_KEY, 'Api-Username': API_USERNAME}
    request = requests.post(url = endpoint, headers = headers)
    print("Codice di stato della richiesta: {}".format(request.status_code))

    # Risposta non elaborata della richiesta API

    response = json.loads(request.text)

    response_columns = response["columns"]
    response_rows = response["rows"]

    new_users = response_rows[0][0]
    active_users = response_rows[0][1]
    new_topics = response_rows[0][2]
    employees_replies = response_rows[0][4]
    external_users_replies = response_rows[0][3] - response_rows[0][4]

    response_text = "🤖 Statistiche Discourse del mese scorso\nNuovi utenti: {}\nUtenti attivi: {}\nNuovi argomenti: {}\nRisposte dei dipendenti: {}\nRisposte degli utenti esterni: {}".format(new_users, active_users, new_topics, employees_replies, external_users_replies)

    return response_text

processed_response = send_request(ENDPOINT)

Ho provato a portarlo in Node.js ma ricevo il codice di stato 301 - “Spostato permanentemente” e sembra che stia facendo esattamente la stessa cosa del mio codice Python. Ecco qui:

const http = require('http');

const options = {
  hostname: 'community.myCompanyNamee.com',
  path: '/admin/plugins/explorer/queries/73/run',
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data',
    'Api-Key': <api_key>,
    'Api-Username': <my_username>
  }
};

var response = 1;

const req = http.request(options, (res) => {
  console.log(`codice di stato: ${res.statusCode}`);
  response = res;

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

var parsed_response = JSON.parse(response);

Non ho esperienza in JS, quindi se qualcuno può dare un’occhiata sarebbe fantastico :slight_smile:

L’ho capito. Ecco il codice della soluzione:


const http = require('https');

const options = {
  hostname: 'community.myCompanyName.com',
  path: '/admin/plugins/explorer/queries/73/run',
  method: 'POST',
  headers: {
    accept: 'application/json',
    'Content-Type': 'multipart/form-data',
    'Api-Key': '<api_key>',
    'Api-Username': '<my_username>'
  }
};

var response = 1;

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);
  response = res;

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

var parsed_response = JSON.parse(response);
console.log(parsed_response);