如何在POST方法中使用dns.lookup()?

编程入门 行业动态 更新时间:2024-10-26 00:25:44

如何在POST<a href=https://www.elefans.com/category/jswz/34/1771314.html style=方法中使用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()?

本文发布于:2024-05-06 22:51:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753918.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   如何在   lookup   POST   dns

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!