如何通过更改 URL 中的参数来更改 API 中的数据?在 javascript 上休息 API?
How to change data from API by changing the parameters in URL ? Restfull API on javascript?
我设置了一个斜线端点。
我想在用户输入时这样做:
http/website.com/date=2019-08-01&station=41027&daysForward=5
能够改变三个参数来获取不同的数据。
日期="first parameter"
站="second parameter"
daysForward="third parameter"
var express = require("express")
var app = express()
var mysql = require('mysql')
// Server port
var HTTP_PORT = 8000;
// Start server
app.listen(HTTP_PORT, () => {
console.log("Server running on port %PORT%".replace("%PORT%",HTTP_PORT))
});
var con = mysql.createConnection({
host: "192.168.0.1",
port: "3333",
user: "username",
password: "pass"
});
con.connect(function(err) {
if (err) throw err;
});
let selectCustomers = function (query, cb) {
let aladinModel = '';
if (query.date && query.station && query.daysForward) {
con.query(`CALL aladin_surfex.Get_mod_cell_values_meteogram(${query.date},${query.station},${query.daysForward})`, function (err, result, fields) {
if (err) throw err;
console.log(result);
aladinModel = result;
return cb(aladinModel);
});
}
else return cb(aladinModel);
};
// Root endpoint
app.get("/", (req, res, next) => {
selectCustomers(req.query, 函数 (aladinModel) {
res.json({aladinModel})
const date = req.query.date;
const station = req.query.station;
const daysForward = req.query.daysForward;
const query = `CALL aladin_surfex.Get_mod_cell_values_meteogram(${date}, ${station}, ${daysForward})`;
con.query(query, function (err, result, fields) {
if (err) throw err;
aladinModel = result;
});
res.json({aladinModel})
});
app.use(function(req, res){
res.status(404);
});
我收到这个错误:
ReferenceError: aladinModel is not defined
at app.get (C:\Users\Admin\node-express\server.js:54:13)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Admin\node-express\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Admin\node-express\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:275:10)
at expressInit (C:\Users\Admin\node-express\node_modules\express\lib\middleware\init.js:40:5)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
您应该改用查询参数。
http/website.com?date=2019-08-01&station=41027&daysForward=5
例子
app.get("/", (req, res, next) => {
const date = req.query.date;
const station = req.query.station;
const daysForward = req.query.station;
const query = `CALL aladin_surfex.Get_mod_cell_values_meteogram(${date}, ${station}, ${daysForward})`;
con.query(query, function (err, result, fields) {
if (err) throw err;
aladinModel = result;
});
res.json({aladinModel})
});
此代码应该可以工作,但您应该将代码拆分为多个函数。您可能还必须为这些参数定义默认值。
使用以下代码:
// Create express app
var express = require("express")
var app = express()
var mysql = require('mysql')
var date = '';
var station = '';
var daysForward = '';
// Server port
var HTTP_PORT = 8000;
// Start server
app.listen(HTTP_PORT, () => {
console.log("Server running on port %PORT%".replace("%PORT%",HTTP_PORT))
});
var con = mysql.createConnection({
host: "192.168.0.1",
port: "3306",
user: "user",
password: "password"
});
con.connect(function(err) {
if (err) throw err;
});
let selectCustomers = function (query, cb) {
let aladinModel = '';
if (query.date && query.station && query.daysForward) {
con.query(`CALL aladin_surfex.Get_mod_cell_values_meteogram(${query.date},${query.station},${query.daysForward})`, function (err, result, fields) {
if (err) throw err;
console.log(result);
aladinModel = result;
return cb(aladinModel);
});
}
else return cb(aladinModel);
};
// Root endpoint
app.get("/", (req, res, next) => {
selectCustomers(req.query, function (aladinModel) {
res.json({aladinModel})
});
});
app.use(function(req, res){
res.status(404);
});
然后在浏览器中使用查询参数来传递日期、站点和 daysForward,例如:
http://www.website.com?date=2019-08-01&station=41027&daysForward=5
我设置了一个斜线端点。
我想在用户输入时这样做: http/website.com/date=2019-08-01&station=41027&daysForward=5
能够改变三个参数来获取不同的数据。
日期="first parameter"
站="second parameter"
daysForward="third parameter"
var express = require("express")
var app = express()
var mysql = require('mysql')
// Server port
var HTTP_PORT = 8000;
// Start server
app.listen(HTTP_PORT, () => {
console.log("Server running on port %PORT%".replace("%PORT%",HTTP_PORT))
});
var con = mysql.createConnection({
host: "192.168.0.1",
port: "3333",
user: "username",
password: "pass"
});
con.connect(function(err) {
if (err) throw err;
});
let selectCustomers = function (query, cb) {
let aladinModel = '';
if (query.date && query.station && query.daysForward) {
con.query(`CALL aladin_surfex.Get_mod_cell_values_meteogram(${query.date},${query.station},${query.daysForward})`, function (err, result, fields) {
if (err) throw err;
console.log(result);
aladinModel = result;
return cb(aladinModel);
});
}
else return cb(aladinModel);
};
// Root endpoint
app.get("/", (req, res, next) => {
selectCustomers(req.query, 函数 (aladinModel) { res.json({aladinModel})
const date = req.query.date;
const station = req.query.station;
const daysForward = req.query.daysForward;
const query = `CALL aladin_surfex.Get_mod_cell_values_meteogram(${date}, ${station}, ${daysForward})`;
con.query(query, function (err, result, fields) {
if (err) throw err;
aladinModel = result;
});
res.json({aladinModel})
});
app.use(function(req, res){
res.status(404);
});
我收到这个错误:
ReferenceError: aladinModel is not defined
at app.get (C:\Users\Admin\node-express\server.js:54:13)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Admin\node-express\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Admin\node-express\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Admin\node-express\node_modules\express\lib\router\index.js:275:10)
at expressInit (C:\Users\Admin\node-express\node_modules\express\lib\middleware\init.js:40:5)
at Layer.handle [as handle_request] (C:\Users\Admin\node-express\node_modules\express\lib\router\layer.js:95:5)
您应该改用查询参数。
http/website.com?date=2019-08-01&station=41027&daysForward=5
例子
app.get("/", (req, res, next) => {
const date = req.query.date;
const station = req.query.station;
const daysForward = req.query.station;
const query = `CALL aladin_surfex.Get_mod_cell_values_meteogram(${date}, ${station}, ${daysForward})`;
con.query(query, function (err, result, fields) {
if (err) throw err;
aladinModel = result;
});
res.json({aladinModel})
});
此代码应该可以工作,但您应该将代码拆分为多个函数。您可能还必须为这些参数定义默认值。
使用以下代码:
// Create express app
var express = require("express")
var app = express()
var mysql = require('mysql')
var date = '';
var station = '';
var daysForward = '';
// Server port
var HTTP_PORT = 8000;
// Start server
app.listen(HTTP_PORT, () => {
console.log("Server running on port %PORT%".replace("%PORT%",HTTP_PORT))
});
var con = mysql.createConnection({
host: "192.168.0.1",
port: "3306",
user: "user",
password: "password"
});
con.connect(function(err) {
if (err) throw err;
});
let selectCustomers = function (query, cb) {
let aladinModel = '';
if (query.date && query.station && query.daysForward) {
con.query(`CALL aladin_surfex.Get_mod_cell_values_meteogram(${query.date},${query.station},${query.daysForward})`, function (err, result, fields) {
if (err) throw err;
console.log(result);
aladinModel = result;
return cb(aladinModel);
});
}
else return cb(aladinModel);
};
// Root endpoint
app.get("/", (req, res, next) => {
selectCustomers(req.query, function (aladinModel) {
res.json({aladinModel})
});
});
app.use(function(req, res){
res.status(404);
});
然后在浏览器中使用查询参数来传递日期、站点和 daysForward,例如:
http://www.website.com?date=2019-08-01&station=41027&daysForward=5