【发布时间】:2016-01-16 18:14:07
【问题描述】:
上下文
我在 learnyounode
中遇到过练习npm install -g learnyounode
调用 HTTP JSON API SERVER。 练习目标:
编写一个 HTTP 服务器,当它接收到路径“/api/parsetime”的 GET 请求时提供 JSON 数据。期望请求包含一个 以“iso”键和 ISO 格式时间作为值的查询字符串。
例如:
/api/parsetime?iso=2013-08-10T12:10:15.474Z
我无法解决它,我认为这是由于缺乏一些特定的 API 知识,所以我查找了一个解决方案,发现了这个(顺便说一句效果很好):
var http = require('http');
var url = require('url');
function parsetime (time) {
return {
hour: time.getHours(),
minute: time.getMinutes(),
second: time.getSeconds()
};
}
function unixtime (time) {
return { unixtime : time.getTime() };
}
var server = http.createServer(function (req, res) {
var parsedUrl = url.parse(req.url, true);
var time = new Date(parsedUrl.query.iso);
var result;
if (/^\/api\/parsetime/.test(req.url))
result = parsetime(time);
else if (/^\/api\/unixtime/.test(req.url))
result = unixtime(time);
if (result) {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(result));
} else {
res.writeHead(404);
res.end();
}
})
server.listen(Number(process.argv[2]));
实际问题
我看着这个sn-p,愣住了。
if (/^\/api\/parsetime/.test(req.url))
result = parsetime(time);
else if (/^\/api\/unixtime/.test(req.url))
result = unixtime(time);
谁能解释一下/^\/api\/parsetime/.test(req.url) 究竟做了什么?起初它看起来像是某种正则表达式,但我从未见过 RegExp 可以调用方法。我猜它是某种形式的 URL 路径识别,但猜测在行业中没有多大价值。
提前感谢大家!
【问题讨论】:
-
是的,它是用于识别URL路径RegExp.test()。
标签: javascript json node.js api http