Javascript HTTP JSON API服务器中的这段代码在LearnyYouNode中执行了什么 上下文
我在Learnyonode遇到过锻炼 称为HTTP JSON API服务器。 练习的目标: 编写一个HTTP服务器,当它接收到路径“/api/parsetime”的GET请求时,为JSON数据提供服务。期望请求包含一个 以键“iso”和iso格式时间作为值的查询字符串 例如: /api/parsetime?iso=2013-08-10T12:10:15.474Z 我无法解决它,我认为这是由于缺乏一些特定的API知识,所以我查找了一个解决方案,发现了这个(顺便说一句,它工作得很好):Javascript HTTP JSON API服务器中的这段代码在LearnyYouNode中执行了什么 上下文,javascript,json,node.js,api,http,Javascript,Json,Node.js,Api,Http,我在Learnyonode遇到过锻炼 称为HTTP JSON API服务器。 练习的目标: 编写一个HTTP服务器,当它接收到路径“/api/parsetime”的GET请求时,为JSON数据提供服务。期望请求包含一个 以键“iso”和iso格式时间作为值的查询字符串 例如: /api/parsetime?iso=2013-08-10T12:10:15.474Z 我无法解决它,我认为这是由于缺乏一些特定的API知识,所以我查找了一个解决方案,发现了这个(顺便说一句,它工作得很好): var h
var http=require('http');
var url=require('url');
函数解析时间(time){
返回{
小时:time.getHours(),
分钟:time.getMinutes(),
秒:time.getSeconds()
};
}
函数unixtime(时间){
返回{unixtime:time.getTime()};
}
var server=http.createServer(函数(req,res){
var parsedUrl=url.parse(req.url,true);
var time=新日期(parsedUrl.query.iso);
var结果;
if(/^\/api\/parsetime/.test(req.url))
结果=解析时间(time);
else if(/^\/api\/unixtime/.test(req.url))
结果=unixtime(时间);
如果(结果){
res.writeHead(200,{'Content-Type':'application/json'});
res.end(JSON.stringify(result));
}否则{
书面记录(404);
res.end();
}
})
listen(编号(process.argv[2])代码>看起来好像
if (/^\/api\/parsetime/.test(req.url))
result = parsetime(time);
else if (/^\/api\/unixtime/.test(req.url))
result = unixtime(time);
正在调用函数,但它只是生成一个字符串输出,实际调用程序调用.test()将其转换为真实表达式
有关javascript正则表达式的更多信息,请查看说明:
编写一个HTTP服务器,当它接收到对路径“/api/parsetime”的GET请求时提供JSON数据(…)将第二个端点添加到路径“/api/UnixtTime”
这意味着服务器获取的GET请求可以指向“/api/parsetime”(resp./api/unixtime)”以外的路径
因此,您需要测试服务器获取的GET请求是否指向上述两条路径之一。您可以使用regexp来实现这一点。根据给定的2个URL检查URL的一种简单方法是使用test()方法
请参见MDN上的regexp示例:
在:
if语句中的第一个“/
”字符表示JavaScript中regex对象的开头,并以另一个“/
”字符结尾。因此,例如,/a/.test('a')
将计算为true
正则表达式中的“^
”字符只表示正则表达式中的第一个字符,“\/
”是因为“/
”是一个以正则表达式结尾的特殊字符,而前面的“\
”是另一个特殊字符,可以抵消特殊字符,因此使用“\/
”我们以文字结尾“/
”作为搜索模式中的第一个(“^
”)字符
因此,在上面的正则表达式中,/^\/api\/parsetime/
通过取消“/
”字符来保持模式。前面的“^
”表示我们需要以文本“/
”开头。然后我们像往常一样以“/
”结束正则表达式
正则表达式和其他特殊字符可在此处找到:
是的,它用于标识URL路径。
if (/^\/api\/parsetime/.test(req.url))
result = parsetime(time);
else if (/^\/api\/unixtime/.test(req.url))
result = unixtime(time);
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]))
if (/^\/api\/parsetime/.test(req.url))
result = parsetime(time);
else if (/^\/api\/unixtime/.test(req.url))
result = unixtime(time)