Node.js 调 webservice 有什么好的例子吗?

Node.js 调 webservice 有什么好的例子吗?

http 创建 server 的那种感觉不够简单易用。有人用过 request 吗?有没有个好的例子。或是其他类似的插件推荐一下。 另外,我现在的项目只需要我从客户端用 WebSocket 向 client 推送数据,是不是没有什么必要使用 Express。

5 回复

Node.js 调用 WebService 的例子

使用 request 库调用 WebService

request 是一个非常流行的 HTTP 客户端库,用于在 Node.js 中进行简单的 HTTP 请求。虽然它已经不再维护,但依然可以很好地完成基本的 HTTP 操作。

首先,你需要安装 request 库:

npm install request

接下来是一个简单的例子,展示如何使用 request 库来调用一个 WebService 并获取响应数据:

const request = require('request');

// 定义请求的 URL 和选项
const url = 'https://jsonplaceholder.typicode.com/posts/1';

// 发起 GET 请求
request(url, { json: true }, (err, res, body) => {
  if (err) { 
    return console.log(err); 
  }
  
  // 打印响应体中的数据
  console.log(body);
});

在这个例子中,我们向 jsonplaceholder API 发起一个 GET 请求,并打印出返回的数据。

使用 axios 库调用 WebService

如果你需要一个更现代、更灵活的库,axios 是一个不错的选择。axios 支持 Promise API,可以与 async/await 结合使用,使代码更加简洁。

首先,你需要安装 axios 库:

npm install axios

以下是一个使用 axios 调用 WebService 的例子:

const axios = require('axios');

// 定义请求的 URL
const url = 'https://jsonplaceholder.typicode.com/posts/1';

// 发起 GET 请求
axios.get(url)
  .then(response => {
    // 打印响应数据
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

在这个例子中,我们同样向 jsonplaceholder API 发起一个 GET 请求,并处理成功和失败的情况。

使用 WebSocket 进行数据推送

关于你的问题,是否有必要使用 Express 以实现通过 WebSocket 向客户端推送数据,答案取决于你的具体需求。如果你只是需要简单的 WebSocket 功能,你可以使用 ws 库,而不需要 Express。

首先,你需要安装 ws 库:

npm install ws

以下是一个简单的 WebSocket 服务器示例:

const WebSocket = require('ws');

// 创建 WebSocket 服务器
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', ws => {
  console.log('Client connected');

  // 向客户端发送数据
  ws.send(JSON.stringify({ message: 'Hello Client' }));

  ws.on('message', message => {
    console.log(`Received: ${message}`);
  });

  ws.on('close', () => {
    console.log('Client disconnected');
  });
});

在这个例子中,我们创建了一个 WebSocket 服务器,并在客户端连接时发送一条消息。你也可以根据需要调整代码,实现更复杂的功能。

总结来说,requestaxios 可以用来调用 WebService,而 ws 库可以用来处理 WebSocket 连接。根据你的具体需求选择合适的工具。


我用过一个是 superagent, 个人觉得不错: http://visionmedia.github.com/superagent/ 没有 HTTP 服务不用 Express 没关系呀

request

https://github.com/mikeal/request

这个用的人多…

当然,tj 大神的也不错…

我也是在npmjs看的排在前面的。我现在准备用request来着,遇到点小麻烦,帮我看一下。我用socket.io 在一个on的事件里去请求数据然后返回到页面上,但是现在他并没有去发请求。 <pre><code>socket.on(“newUser”, function(data){ console.log(“newUser:”+data.id+":"+data.name); participants.push({id:data.id,name:data.name}); console.log("---------------------------------------------->Enter New User."+options.url); request(options, callback); }); var options = { url: ‘https://api.github.com/repos/mikeal/request’, headers: { ‘User-Agent’: ‘request’ } }; function callback(error, response, body) { console.log("-------------------------------------------->D"); if (!error && response.statusCode == 200) { var info = JSON.parse(body); console.log(info.stargazers_count + " Stars"); console.log(info.forks_count + " Forks"); } } </code></pre>

针对你的问题,Node.js 中调用 Web Service 可以使用 axios 或者 request 这样的库来实现。这里提供一个使用 axios 的简单示例。同时,如果你的项目中只需要通过 WebSocket 向客户端推送数据,确实可以不使用 Express。

示例代码

假设我们要调用一个简单的 RESTful API 来获取用户信息,我们可以使用 axios 库:

  1. 首先安装 axios
npm install axios
  1. 使用 axios 调用 Web Service:
const axios = require('axios');

async function getUserInfo() {
    try {
        const response = await axios.get('https://jsonplaceholder.typicode.com/users/1');
        console.log(response.data);
    } catch (error) {
        console.error(`Error fetching data: ${error.message}`);
    }
}

getUserInfo();

上面的代码中,我们调用了 jsonplaceholder 提供的一个假的 API 来获取用户信息。axios.get 是一个异步函数,返回的是一个 Promise 对象。我们使用 await 关键字等待其结果,并处理可能发生的错误。

WebSocket 与 Express

关于 WebSocket,如果你的项目只需要通过 WebSocket 向客户端推送数据,那么你可以考虑使用专门的 WebSocket 库,如 ws,而不需要 Express。

示例代码:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
    ws.on('message', function incoming(message) {
        console.log('received: %s', message);
    });

    // 发送给所有连接的客户端
    setInterval(() => {
        ws.send(JSON.stringify({
            type: 'data',
            content: 'Hello, Client!'
        }));
    }, 5000);
});

这段代码创建了一个 WebSocket 服务器,它每 5 秒向所有连接的客户端发送一次消息。这种方式更适用于需要实时数据传输的场景。

回到顶部