http模块-实现get接口功能
get接口-无参数
假设要实现一个get类型的接口。具体要求如下:
地址:/gettime
功能:以json字符串格式返回服务器的时间戳。
示例:
// 不带参数
输入:localhost:8080/gettime;
返回:{_t:1563265441778}
参考代码:
// 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');
const app = http.createServer((req, res) => {
let { pathname } = url.parse(req.url, true);
if (pathname === '/gettime') {
let obj = {_t : Date.now()}
res.end(JSON.stringify(obj));// 把对象转成字符串之后再返回
} else {
res.end('error');
}
});
// 监听端口
app.listen(8080, () => {
console.log(8080);
});
说明:
- req.method 可以判断请求的类型,请求方式 (大写名称,判断时需要注意)。
- res.end()的参数只能是字符串,而不能是对象。
接口与静态资源的区别
服务器上有很多的资源,每个资源都有自己的url。客户端浏览器想要访问某个资源就要向服务器发起对应的请求。
资源的分类:
- 静态资源。
- 它们一般表现为一个一个的文件。例如index.html, style.css, index.js。
- 处理请求静态资源时,服务器一般就直接读出资源的内容,再返回给客户端浏览器。
- 动态资源:接口
- 它们不是以某个具体的文件存在的,而是通过服务器上的一段代码处理得到的数据,访问接口时,服务器会执行这段代码,然后把代码的执行结果返回给客户端浏览器。
get接口-带参数
假设要实现一个get类型的接口,具体要求如下:
地址:localhost:8080/get
功能:获取用户传入的参数,并以json字符串格式返回,在返回的信息中要加上时间戳.
示例:
// 带参数
输入:localhost:8080/get?name=filex&age=30;
返回:{name:filex,age:30,_t:1563265441778}
分析:get请求的参数附加在url中,可以使用url模块来取出用户url中的参数部分,再使用querystring模块取出具体的参数值。
这里直接使用两个核心模块url
和querystring
来实现上述的需求。
const http = require('http');
const queryString = require('querystring');
const url = require('url');
const server = http.createServer(function(req, res) {
var { pathname, query } = url.parse(req.url);
var obj = queryString.parse(query);
console.log(p, url.parse(req.url));
if (pathname === '/get' && req.method === 'GET') {
res.setHeader('content-type', 'application/json');
obj.d = Date.now();
res.end(JSON.stringify(obj));
} else {
res.setHeader('content-type', 'text/html;charset=utf-8');
res.end('error');
}
});
server.listen(8088, function() {
console.log('success', 8088);
});