方法中使用dns.lookup()?"/>
如何在POST方法中使用dns.lookup()?
我从事URL缩短项目。我想使用dns.lookup方法。它在单独使用时对我有用。一旦在POST方法中使用它,它就不再起作用,即使地址有效,它也会返回false。你能帮我吗?谢谢!这是整个项目::
app.post('/api/shorturl/new', (req, res, next) => {
var originalURL = req.body.url;
dns.lookup(originalURL, (err, address, family) => {
if (err) {
res.json({
originalURL: originalURL,
shortenedURL: "Invalid URL"
});
} else {
var shortenedURL = Math.floor(Math.random() * 100000).toString();
var data = new Model({
originalURL: originalURL,
shortenedURL: shortenedURL
});
data.save(function(err, data) {
if (err) {
return console.error(err);
}
});
res.json({
originalURL: originalURL,
shortenedURL: shortenedURL
})
};
});
});
回答如下:dns.lookup()
希望您仅将主机名(例如www.google
)传递给它,而不传递url。您可以在doc刚刚通过"example"
的地方看到一个代码示例。
您可以从网址中解析主机名。您可以使用原始的node.js url
解析功能,也可以使用较新的标准URL对象(这对于浏览器和node.js都是相同的)。我在这里显示更新的URL对象:
const URL = require('url').URL;
app.post('/api/shorturl/new', (req, res, next) => {
const originalURL = req.body.url;
const urlObject = new URL(originalURL);
dns.lookup(urlObject.hostname, (err, address, family) => {
if (err) {
res.json({
originalURL: originalURL,
shortenedURL: "Invalid URL"
});
} else {
var shortenedURL = Math.floor(Math.random() * 100000).toString();
var data = new Model({
originalURL: originalURL,
shortenedURL: shortenedURL
});
data.save(function(err, data) {
if (err) {
return console.error(err);
}
});
res.json({
originalURL: originalURL,
shortenedURL: shortenedURL
})
};
});
});
要查看URL对象能够从URL中解析出什么,例如:
http://www.example:3000/somePath/somePage.html
这是一个简单的测试应用程序,它提供的输出是:
const {URL} = require('url');
let originalURL = "http://www.example:3000/somePath/somePage.html"
const urlObject = new URL(originalURL);
console.log(urlObject.hostname);
console.log(urlObject);
显示此输出:
www.example
URL {
href: 'http://www.example:3000/somePath/somePage.html',
origin: 'http://www.example:3000',
protocol: 'http:',
username: '',
password: '',
host: 'www.example:3000',
hostname: 'www.example',
port: '3000',
pathname: '/somePath/somePage.html',
search: '',
searchParams: URLSearchParams {},
hash: ''
}
更多推荐
如何在POST方法中使用dns.lookup()?
发布评论