Sunday, March 15, 2015

Codeschool: Real Time Web, Part III

Express is a web framework for node.js, i.e. we can finally build a web server (easily). To install it, use

$ npm install --save express
The --save adds the module to our dependency list. Here is a simple app to get us started:
var express = require('express');
var app = express();

app.get('/', function(request, response){
  response.sendFile(__dirname + "/index.html");
});
app.listen(8080);

ejs

ejs is the template (templating?) package. By default it will look for templates under 'views' directory. Here is a more complicated example using ejs:

var request = require('request');
var url = require('url');

// route definition
app.get('/tweets/:username',function(req,response){
  var username = req.params.username;

  options = {
    protocol: "http",
    host: 'api.twitter.com',
    pathname: '/1/statuses/user_timeline.json',
    query: { screen_name: username, count: 10}
  }

  var twitterUrl = url.format(options);
  //request(twitterUrl).pipe(response);
  request(url, function(err,res,body) {
    var tweets = JSON.parse(body);
    response.locals = {tweets: tweets, name: username};
    response.render('tweets.ejs');
  });
where the template looks like

Tweets for @<%=name%>

    <% tweets.forEach(function(tweet){ %>
  • <%== tweet.text %>
  • <% }); %>
To call this, use the url:
curl -s http://localhost:8080/tweets/eallam

Here is another example, supposing that we are going to call Twitter's search API, e.g http://search.twitter.com/search.json?q=codeschool. It uses the 'request' module.

var req = require('request');
var url = require('url');
var experss = require('express');

var options = {
  protocol: "http:",
  host: "search.twitter.com",
  pathname: '/search.json',
  query: { q: "codeschool"}
};

var searchURL = url.format(options);
var app = express();

app.get('/',function(req,response){
  request(searchURL).pipe(response);
}).listen(8080);
});


No comments:

Post a Comment