使用Express.JS来使用API

时间:2015-12-17 05:58:43

标签: javascript json node.js api express

var express = require('express');
var app = express();
var path = require('path');
var api = require('./api');


app.get('/', function(req, res){
res.sendFile(path.join(__dirname + '/index.html'));
})


app.listen(8080)
console.log('Server Running');

我知道我们需要快递模块。我们正在使用express函数,我们需要模块路径并将引用存储在变量路径中并对api执行相同操作但超出此范围我有点迷失。如果我想连接到twitter API,我该怎么做呢?有人可以解释它背后的逻辑,这样我就可以更好地学习这个并用自己的不同API来应用它吗?我真诚地非常感谢你的帮助!

2 个答案:

答案 0 :(得分:6)

Express是用于组织Web应用程序服务器的框架。您打开某些API路由以侦听路径并在必要时响应请求。

您只能打开API供内部使用,即来自运行您应用的浏览器的调用。或者你可以将你的API暴露给外部世界(例如twitter API正在这样做)。

要连接到Twitter API,您需要从您的网络服务器发出传出请求。有很多方法可以解决这个问题,从原生nodeJS包http https://nodejs.org/api/http.html开始,到更受欢迎的替代request https://github.com/request/request

这里要注意的一点是,NodeJS Web服务器通常比其他语言服务器的限制性更小,特别是在组织应用程序和代码体系结构时。因此对初学者来说有更多问题。随意提出更多问题。

中应用的主要目的

var app = express()

是监听路由(它也用于渲染页面,添加中间件等)而且只是那样。

假设您的UI上有一个按钮,允许您连接到Twitter API。因此,在点击时,您向自己的服务器发出GET请求,/api/twitter/connect。 在您的服务器上,您可以按如下方式在此路径上收听:

var request = require('request'); //assuming you installed this module
app.get('/api/twitter/connect', function(req, res){
  request(TWITTER_API_URL + API_KEYS, function(err, body){
      res.json(body); //res is the response object, and it passes info back to client side
  });
});

答案 1 :(得分:1)

您可以使用“request”包发送请求。但是在Cross-Origin-Request的情况下,您必须使用“HTTPS”而不是“HTTP”。您可以根据您的请求类型配置您的请求..

 //Load the request module
var request = require('request');

//Lets configure and request
request({
    url: 'https://example.com/abc/demo', //URL to hit
    qs: {from: 'example', time: +new Date()}, //Query string data
    method: 'GET', // specify the request type
    headers: { // speciyfy the headers
        'Content-Type': 'MyContentType',
        'Custom-Header': 'Custom Value'
    },
    body: 'Hello Hello! String body!' //Set the body as a string
}, function(error, response, body){
    if(error) {
        console.log(error);
    } else {
        console.log(response.statusCode, body);
    }
});

除此之外,还有其他方法可以做到这一点。对于twitter,您还可以查看名为“twitter

的模块