javascript - 如何从 Express.js 发布到 api

标签 javascript json node.js express asp.net-web-api

一般来说,我是 Node/Express 和 API 的新手。长话短说,我是一名前端人员,第一次涉足后端和架构。我的问题分割如下:

应用描述:一个允许用户查看医疗数据记录的网络应用。

所需功能:在页面加载时更改 json 记录的状态。当用户打开记​​录(页面)时,我想自动将 json 对象从 UNDIAGNOSED 更改为 DIAGNOSED。这需要在服务器端完成以避免暴露 api 端点,出于安全原因需要保持隐藏。将其视为“已读/未读”电子邮件。打开后,它会将状态更改为“已读”

问题:...我是新手...

//When the server GETs a request to this URL
router.get('/content/:contentid', function(req, res, next) {

// Configure the REST platform call
var platform_options = {
    resource: '/content/' + req.params.contentid,
    method: 'POST',
    json: "diagnosis_state: DIAGNOSED"
};

// Make the call
var platform = ihplatform(_config, req.session, platform_options, callback);
platform.execute();

// Result processing
function callback(error, response, body) {
    console.log(response.body);
}

});

我正在使用由另一位开发人员在内部构建的自定义 HTTP API。调用的端点是通过 re.params.contentid 动态生成的。您还会注意到调用本身内置于 platform.execute 函数中。

在尝试修改工作调用时,正在进行一些复制/粘贴操作。

我的问题是:如何通过 express.js 对某个 url 的 HTTP 请求对远程 API 进行 api POST 调用?

最佳答案

这是您可以在 express.js 上执行的操作 -

1) 在单独的 js 文件中编写路由映射模块,其中可以列出所有映射。下面是模块文件的代码片段

function mappings(app)
    {
        var email = require('./routes/emails');// ./routes/emails is js file location exporting UpdateEmail variable which contains function for update
        app.put('/email/update', email.UpdateEmail); // mapping url /email/update to exported variable UpdateEmail
    }

2) 在 app.js 文件中添加以下语句,其中 mapRoutes 是在步骤 1 中创建的 .js 文件

require('./mapRoutes').mappings(app);

3) 以下是示例 app.js 文件

var path = require('path');

var favicon = require('static-favicon');

var logger = require('morgan');

var cookieParser = require('cookie-parser');

var bodyParser = require('body-parser');


var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'jade');

app.use(favicon());

app.use(logger('dev'));

app.use(bodyParser.json());

app.use(bodyParser.urlencoded());

app.use(cookieParser());

app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);

app.use('/users', users);

app.all('*', function(req, res, next) {

  res.header('Access-Control-Allow-Origin', req.headers.origin);

    res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');

    res.header('Access-Control-Allow-Credentials', false);

    res.header('Access-Control-Max-Age', '86400');

    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');

  next();

 });
app.options('*', function(req, res) {
   
 res.send(200);

});

require('./mapRoutes').mappings(app);

/// catch 404 and forwarding to error handler
app.use(function(req, res, next) {

    var err = new Error('Not Found');

    err.status = 404;

    next(err);

});


/// error handlers

// development error handler

// will print stacktrace
if (app.get('env') === 'development') {

    app.use(function(err, req, res, next) {

        res.status(err.status || 500);

        res.render('error', {

            message: err.message,

            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {

    res.status(err.status || 500);

    res.render('error', {

        message: err.message,

        error: {}

    });

});



module.exports = app;

4) 在上面的代码上运行的实时网站 - kidslaughs.com

关于javascript - 如何从 Express.js 发布到 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475916/

相关文章:

python - 使用python替换json文件中的引号

node.js - 在 nodejs session 中使用 google memcache

node.js - 使用 IPFS 的去中心化聊天应用程序

node.js - 如何使用 eris 的 javascript 编译一段 Solidity 代码?

javascript - 多个下拉列表 - onclick 不关闭

javascript - Twitter Bootstrap 下拉菜单不出现

javascript - 有没有一种可行的方法来对图像 :data base64 进行特征检测支持

c# - ServiceStack 的 JSON 反序列化器解析无效的 JSON

javascript - Canvas - 如何绘制以光源为中心的点的网格?

json - Powershell 按字母顺序对 PSObject 进行排序