Как объединить запрос, поступающий от двух разных приложений, взять данные из одного запроса и отправить их как ответ на другой запрос? - PullRequest
0 голосов
/ 05 апреля 2020

Я работаю над проектом для моего класса. Приложение облегчает пользователям обновление своих ПК. Приложение состоит из трех частей: интерфейсный сервер, сервер node.js и приложение (сканер) C#, которое пользователь загружает с сервера и запускает локально в пользовательском P C. После запуска сканера он извлекает существующие спецификации оборудования из пользовательского P C и отправляет его как объект json на сервер через HTTP-запрос. серверный API берет эту информацию и генерирует совместимый обновленный список деталей из нашей базы данных. Я изо всех сил пытаюсь найти способ вернуть эти сгенерированные API данные в интерфейс реакции, открытый на стороне пользователя.

API - это REST API

Я новичок в использовании node js и работе с HTTP-запросами. Будет полезно, если кто-нибудь сможет предоставить какое-либо решение, документацию или статью, которые могут быть полезны для реализации этой функциональности. также не стесняйтесь давать какие-либо предложения о том, как добиться этого соединения между тремя частями.

Вот код, где реагирует интерфейс, который отправляет запрос на scanner.exe

  handleDownload = () =>{
    const scn_URL = "http://localhost:5000/fileApi?name=User_scanner.exe";
    Axios({
      method: 'GET',
      url: scn_URL,
      responseType: 'blob'
    })
    .then(response =>{
      console.log(response.data);
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', 'scanner.exe');
      document.body.appendChild(link);
      link.click();
    })

  }

Вот код API на стороне сервера, который обслуживает файл scanner.exe

var express = require("express");
var router = express.Router();

router.get("/", function (req, res, next) {
    const fileName = req.query.name;
    const filepath = "C:\\Users\\Sakib_PC\\my files\\senior_Design\\Senior_DesignS19_group_5\\back-end-testing\\serverAPI\\public\\User_scanner.exe"
    console.log(`Got file name: ${fileName}`);
    res.set({'Content-Type':'application/octet-stream'})
    res.sendFile(filepath, function (err) {
        if (err) {
            next(err)
        } else {
            console.log('Sent:', fileName)
        }
    });

});

module.exports = router;

Сканер отправляет информацию в виде json на сервер и получает имя «data» в приведенном ниже коде

  private async void SendJson_Click(object sender, EventArgs e)
        {
            Console.WriteLine("send button was clicked");

            const string url = "http://localhost:5000/testApi";
            var data = new StringContent(this.jsonData, Encoding.UTF8, "application/json");
            string response;

            HttpClient client = new HttpClient();
            HttpResponseMessage res = await client.PostAsync(url, data);

            response = res.Content.ReadAsStringAsync().Result;
            Console.WriteLine(response);
            if (response == "message recieved")
            {
                Console.WriteLine(response);
                this.finishButton.Enabled = true;
            }
            else
            {
                Console.WriteLine("nothing ");
            }
        }

код для API, который улавливает эти данные, приведен ниже:

var express = require("express");
var router = express.Router();

router.post("/", function (req, res, next) {
    const msg = req.body;
    console.log(msg);
    const modMsg = "message recieved";

    res.send( modMsg);
})

module.exports = router;

данные, получаемые сервером от сканера, приведены в ссылке, которая предназначена для этого. Изображение данных json, отправляемых сканером Можно ли как-нибудь отправить данные сканера, полученные API, на внешний интерфейс, который первым сделал запрос на загрузку. Помните, что запрос GET на загрузку, сделанный с веб-сайта, и запрос POST, сделанный со сканера, являются двумя разными запросами. Моя цель - взять данные из запроса POST сканера и передать их клиенту, с которого отправил запрос на загрузку

спасибо!

...