Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Vue Axios或使用Express Server连接Microsoft Azure机器学习工作室API?_Javascript_Node.js_Azure_Express_Vuetify.js - Fatal编程技术网

Javascript 使用Vue Axios或使用Express Server连接Microsoft Azure机器学习工作室API?

Javascript 使用Vue Axios或使用Express Server连接Microsoft Azure机器学习工作室API?,javascript,node.js,azure,express,vuetify.js,Javascript,Node.js,Azure,Express,Vuetify.js,目前我正在使用下面的代码连接web服务。 我需要使用Vue Axios或Express连接到Microsoft Azure机器学习工作室Api。有人能帮我吗 var http = require("http"); var https = require("https"); var querystring = require("querystring"); var fs = require('fs'); function getPred(data) { console.log('===g

目前我正在使用下面的代码连接web服务。 我需要使用Vue Axios或Express连接到Microsoft Azure机器学习工作室Api。有人能帮我吗

var http = require("http");
var https = require("https");
var querystring = require("querystring");
var fs = require('fs');

function getPred(data) {
    console.log('===getPred()===');
    var dataString = JSON.stringify(data)
    var host = 'ussouthcentral.services.azureml.net'
    var path = '/workspaces/fda91d2e52b74ee2ae68b1aac4dba8b9/services/1b2f5e6f99574756a8fde751def19a0a/execute?api-version=2.0&details=true'
    var method = 'POST'
    var api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=='
    var headers = {'Content-Type':'application/json', 'Authorization':'Bearer ' + api_key};

    var options = {
        host: host,
        port: 443,
        path: path,
        method: 'POST',
        headers: headers
    };

    console.log('data: ' + data);
    console.log('method: ' + method);
    console.log('api_key: ' + api_key);
    console.log('headers: ' + headers);
    console.log('options: ' + options);

    var reqPost = https.request(options, function (res) {
        console.log('===reqPost()===');
        console.log('StatusCode: ', res.statusCode);
        console.log('headers: ', res.headers);

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

    // Would need more parsing out of prediction from the result
    reqPost.write(dataString);
    reqPost.end();
    reqPost.on('error', function(e){
        console.error(e);
    });
}

//Could build feature inputs from web form or RDMS. This is the new data that needs to be passed to the web service.
function buildFeatureInput(){
    console.log('===performRequest()===');
    var data = {
        "Inputs": {
            "input1": {
                "ColumnNames": ["gl10", "roc20", "uo", "ppo", "ppos", "macd", "macds", "sstok", "sstod", "pmo", "pmos", "wmpr"],
                "Values": [ [ "0", "-1.3351", "50.2268", "-0.2693", "-0.2831", "-5.5310", "-5.8120", "61.9220", "45.3998", "-0.0653", "-0.0659", "-30.3005" ], ]
            },
        },
        "GlobalParameters": {}
    }
    getPred(data);
}

function send404Reponse(response) {
    response.writeHead(404, {"Context-Type": "text/plain"});
    response.write("Error 404: Page not Found!");
    response.end();
}

function onRequest(request, response) {
    if(request.method == 'GET' && request.url == '/' ){
        response.writeHead(200, {"Context-Type": "text/plain"});
        fs.createReadStream("./index.html").pipe(response);
    }else {
        send404Reponse(response);
    }
}

http.createServer(onRequest).listen(8050);
console.log("Server is now running on port 8050");
buildFeatureInput();
但我可以通过使用axios call或express server来实现这一点


如果我可以使用vue axios或express server执行此操作,是否有人可以帮助我使用正确的语法

听起来您想在Vue首页的服务器中使用
express
axios
,而不是服务器端的节点
http
服务器和
https
客户端

express
替换节点
http
非常简单,如下所示

const express = require('express')
const path = require('path');
const app = express()
const port = 8050

app.use(express.static(path.join(__dirname, '.')))
app.get('/', (req, res) => res.sendFile('index.html'))

app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err)
})

app.use(function (err, req, res, next) {
    if(err.status == 404) {
        res.status(404).send("Error 404: Page not Found!")
    }
    res.status(500).send("Error 500: Internal Error!")
})

app.listen(port, () => console.log("Server is now running on port 8050"))
const axios = require('axios');

var host = 'ussouthcentral.services.azureml.net'
var path = '/workspaces/fda91d2e52b74ee2ae68b1aac4dba8b9/services/1b2f5e6f99574756a8fde751def19a0a/execute?api-version=2.0&details=true'
var api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=='

const pred = axios.create({
  baseURL: 'https://'+host,
  timeout: 1000,
  headers: {'Content-Type':'application/json', 'Authorization':'Bearer ' + api_key}
});

app.post('/mls-api', (req, res) => pred.post(path, JSON.stringify(req.body)).then(function(resp) {
    resp.pipe(res)
    }))

但考虑到调用Azure机器学习Studio API的代码> API密钥< /COD>值的安全性,我建议不要在VUE首页中用“代码> AXIOS”调用API,仍然通过“代码> Express < /C>”在服务器端进行调用。

const express = require('express')
const path = require('path');
const app = express()
const port = 8050

app.use(express.static(path.join(__dirname, '.')))
app.get('/', (req, res) => res.sendFile('index.html'))

app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err)
})

app.use(function (err, req, res, next) {
    if(err.status == 404) {
        res.status(404).send("Error 404: Page not Found!")
    }
    res.status(500).send("Error 500: Internal Error!")
})

app.listen(port, () => console.log("Server is now running on port 8050"))
const axios = require('axios');

var host = 'ussouthcentral.services.azureml.net'
var path = '/workspaces/fda91d2e52b74ee2ae68b1aac4dba8b9/services/1b2f5e6f99574756a8fde751def19a0a/execute?api-version=2.0&details=true'
var api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=='

const pred = axios.create({
  baseURL: 'https://'+host,
  timeout: 1000,
  headers: {'Content-Type':'application/json', 'Authorization':'Bearer ' + api_key}
});

app.post('/mls-api', (req, res) => pred.post(path, JSON.stringify(req.body)).then(function(resp) {
    resp.pipe(res)
    }))
然后,您可以使用下面的
数据
值从Vue首页调用
/mls api
url

var data = {
    "Inputs": {
        "input1": {
            "ColumnNames": ["gl10", "roc20", "uo", "ppo", "ppos", "macd", "macds", "sstok", "sstod", "pmo", "pmos", "wmpr"],
            "Values": [ [ "0", "-1.3351", "50.2268", "-0.2693", "-0.2831", "-5.5310", "-5.8120", "61.9220", "45.3998", "-0.0653", "-0.0659", "-30.3005" ], ]
        },
    },
    "GlobalParameters": {}
}

axios.post('/mls-api', data)
  .then(function (response) {
    console.log(response);
  })