Express Routes

Let's create an express route that accepts GET requests on'/tweets' and responds by sending back a static HTML file.

Create a GET route for '/tweets' and give it the proper callback. The callback function should accept two arguments: the request and the response.

Send back the file tweets.html, which lives under the project's root path. Remember to use __dirname to locate tweets.html.

Finally, have the express app listen on port 8080.

var express = require('express');
var app = express(); app.get('/tweets', function(request, response){
response.sendFile( __dirname + '/tweets.html');
}).listen(8080);

Route Params 250 PTS

Let's create a route that accepts dynamic arguments in the URL path and and responds with the quote from the proper author.

Start by creating a GET route for '/quotes' that takes a name parameter as part of the URL path.

Now, use the name parameter from the URL to retrieve a quote from the quotes object and write it out to the response. Note: No piping here, just write the quote string to the response like you did in previous levels (and then close the response).

var express = require('express');
var app = express(); var quotes = {
'einstein': 'Life is like riding a bicycle. To keep your balance you must keep moving',
'berners-lee': 'The Web does not just connect machines, it connects people',
'crockford': 'The good thing about reinventing the wheel is that you can get a round one',
'hofstadter': 'Which statement seems more true: (1) I have a brain. (2) I am a brain.'
}; app.get('/quotes/:name', function(req, response){
response.end(quotes[req.params.name]);
}); app.listen(8080);

Rendering

Instead of just writing out the quote to the response, let's try using an EJS template to render the response.

First, render the quote.ejs template to the response.

Next, make the name and the quote data available to the template.

res.locals = {name: req.params.name, quote: quote};

Inside quote.ejs, add the code needed to render the data you passed to the template.

<h2>Quote by <%= name %></h2>

<blockquote>
<%= quote %>
</blockquote>

URL Building

Let's create a page which calls the Twitter search API and displays the last few results for Code School. The first step is to construct the proper URL, which is all you need to do in this challenge.

Complete the URL options which will be sent into the the urlmodule's format method. The URL you'll want to construct is the following: http://search.twitter.com/search.json?q=codeschool

Add the protocol attribute to options.

Add the host attribute to options.

Add the pathname attribute to options.

Add an attribute which takes an object of query parameters, in this case we only need q to search Twitter.

var url = require('url');

options = {
// add URL options here
protocol: 'http:',
host : 'search.twitter.com',
pathname : '/search.json',
query: {q:'codeschool'}
}; var searchURL = url.format(options);
console.log(searchURL);

Doing the Request

Next, we'll use the request module to make a simple web request and log the response to the console. You can use this example in the README.

To start, require the request module and assign the return function to a variable.

Next, issue a request to searchURL. Remember, the callback function for the request function takes three arguments: errorresponse and body.

Finally, log the response body to the console using console.log().

var url = require('url');

var options = {
protocol: "http:",
host: "search.twitter.com",
pathname: '/search.json',
query: { q: "codeschool"}
}; var searchURL = url.format(options);
var request = require('request');
request(searchURL, function(error, response , body){
console.log(body);
});

Express Server

Now, let's create an Express server which queries out for the search term and then returns the JSON.

Require the express module.

Create the Express server and name it app.

Create a route for GET requests to / (root path). Remember, the callback function takes two arguments: a request req and a response res.

In our new route, issue a request to searchURL and pipe the results into the response.

Finally, tell app to listen on port 8080.

var url = require('url');
var request = require('request');
var express = require('express'); var options = {
protocol: "http:",
host: "search.twitter.com",
pathname: '/search.json',
query: {
q: "codeschool"
}
}; var searchURL = url.format(options); var app = express(); // Create server here
app.get('/', function(req, res){
request(searchURL).pipe(res);
}).listen(8080);

[Node.js] Level 5. Express的更多相关文章

  1. node.js 下依赖Express 实现post 4种方式提交参数

    上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...

  2. Node.js的框架-express

    Node.js的框架 express 是第三方的 express const express=require('express'); const app=express(); const PORT=3 ...

  3. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

  4. node.js入门及express.js框架

    node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...

  5. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  6. 建立一个node.js服务器(使用express搭建第一个Web环境)

    一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...

  7. Node.js 入门:Express + Mongoose 基础使用

    前言 Express 是基于 Node.js 平台的 web 应用开发框架,在学习了 Node.js 的基础知识后,可以使用 Express 框架来搭建一个 web 应用,实现对数据库的增删查改. 数 ...

  8. Node.js原生及Express方法实现注册登录原理

    由于本文只是实现其原理,所以没有使用数据库,只是在js里面模拟数据库,当然是种中还是需要用数据库的. 1.node.js原生方法 ①html页面,非常简单,没有一丝美化~我们叫它user.html & ...

  9. node.js上除了Express还有哪些好用的web开发框架

    老司机都有体会, 开发本身没有多难, 最纠结其实是最初的技术和框架选型, 本没有绝对的好坏之分, 可一旦选择了不适合于自己业务场景的框架, 将来木已成舟后开发和维护成本都很高, 等发现不合适的时候更换 ...

随机推荐

  1. 自定义寄存器出现error C142: 'SFR': invalid base address

    今天打算自定义一个.H文件来写写代码.自定义寄存器的时候发现出现这样的问题7816.H(5): error C142: 'SFR': invalid base address. 下面是我自定义的寄存器 ...

  2. I/O 多路复用之select、poll、epoll详解

    select,poll,epoll都是IO多路复用的机制.I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但s ...

  3. margin padding 图

  4. [BZOJ4260]Codechef REBXOR(Trie)

    Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...

  5. Luogu P3962 [TJOI2013]数字根 st

    题面 我先对数字根打了个表,然后得到了一个结论:\(a\)的数字根=\((a-1)mod 9+1\) 我在询问大佬后,大佬给出了一个简单的证明: \(\because 10^n\equiv 1(mod ...

  6. [POI2012]Squarks

    [POI2012]Squarks 题目大意: 设有\(n\)个互不相同的正整数\(\{X_1,X_2,...,X_n\}\),任取两个\(X_i,X_j(i\ne j)\),能算出\(X_i+X_j\ ...

  7. JSONObject 和 JSONArray 的区别和用法

    JSONObject 和 JSONArray 的数据表现形式不同: JSONObject的数据是用 {  } 来表示的,例如: { "id" : "1", &q ...

  8. iOS Masonry的使用需要注意的地方

    自动布局最重要的是约束:UI元素间关系的数学表达式.约束包括尺寸.由优先级和阈值管理的相对位置.它们是添加剂,可能导致约束冲突 .约束不足造成布局无法确定 .这两种情况都会产生异常. 使用前:Auto ...

  9. MYSQL学习笔记 (五)常用的聚合函数

    1.COUNT(e1) 语法:COUNT(e1) 参数:e1为一个表达式,可以是任意的数据类型 返回:返回数值型数据 作用:返回e1指定列不为空的记录总数 例子: 1)单独使用

  10. mybatis源码分析(5)-----拦截器的实现原理(动态代理+责任链)

    写在前面 MyBatsi 的拦截器模式是基于代理的代理模式.并且myBatis 的插件开发也是以拦截器的形式集成到myBatis 当中. MyBatis 的拦截器已经插件是在org.apache.ib ...