Nodejs 语录 Open API

Nodejs 语录 Open API

http://multimediaapi.elasticbeanstalk.com/quotes

返回JSON格式的语录信息。欢迎使用。

Node.js + AWS VPC/EB/EC2/DynamoDB

详细介绍:
http://multimediacloudworkshop.github.io/quotescloud/


10 回复

Nodejs 语录 Open API

在这个帖子中,我们将探讨如何通过一个简单的 Node.js 应用程序来提供一个开放的 API 接口,该接口可以返回 JSON 格式的语录信息。我们将使用 AWS 的服务如 VPC、Elastic Beanstalk、EC2 和 DynamoDB 来部署和管理我们的应用。

示例 API 端点

首先,让我们看看我们提供的 API 端点:

  • URL: http://multimediaapi.elasticbeanstalk.com/quotes
  • 返回数据格式: JSON

当你访问上述 URL 时,你会得到类似以下格式的 JSON 数据:

[
    {
        "id": "1",
        "quote": "Be the change you wish to see in the world.",
        "author": "Mahatma Gandhi"
    },
    {
        "id": "2",
        "quote": "The only way to do great work is to love what you do.",
        "author": "Steve Jobs"
    }
]

技术栈

  • Node.js: 主要编程语言
  • AWS Elastic Beanstalk: 用于部署和管理应用
  • AWS EC2: 提供计算资源
  • AWS VPC: 提供网络隔离
  • AWS DynamoDB: 存储语录数据

示例代码

下面是一个简单的 Node.js 应用程序示例,它从 DynamoDB 获取语录数据并以 JSON 格式返回。

  1. 安装依赖

首先,确保你已经安装了 aws-sdk 包来与 AWS 服务交互:

npm install aws-sdk
  1. 创建服务器

接下来,创建一个基本的 Node.js 服务器:

const express = require('express');
const AWS = require('aws-sdk');

// 配置 AWS SDK
AWS.config.update({
    region: 'us-west-2', // 你的区域
    accessKeyId: 'YOUR_ACCESS_KEY_ID',
    secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'
});

const dynamoDB = new AWS.DynamoDB.DocumentClient();
const app = express();

app.get('/quotes', async (req, res) => {
    try {
        const result = await dynamoDB.scan({ TableName: 'QuotesTable' }).promise();
        res.json(result.Items);
    } catch (error) {
        console.error(error);
        res.status(500).send('Internal Server Error');
    }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

解释

  • Express: 一个流行的 Node.js 框架,用于快速构建 Web 应用。
  • AWS SDK: 用于与 AWS 服务进行交互。
  • DynamoDB: 作为数据库存储语录数据。
  • 路由 /quotes: 当客户端请求这个路径时,服务器将查询 DynamoDB 并返回语录数据。

通过这种方式,你可以轻松地创建一个基于 Node.js 的 API,用于提供语录信息,并利用 AWS 的强大功能进行托管和扩展。


  1. 0 以前写过一个,只不过是小偷罢了,也没这么高级。

https://github.com/XadillaX/node-motto

还要用户设文本编码。你就不能在服务器端设一下?

以前项目中收集整理的300+条语录,费了不少劲

真心请教:怎么设啊?

你应该避免浏览器对字符集进行猜测。。。而且你这样做,chrome都无法设置编码。 这样:content-type:application/json; charset=utf-8

感谢认可!
语录Open API会由 Multimedia Cloud Workshop 长期运营,语录库也会持续更新,请放心使用。

针对“Nodejs 语录 Open API”这个帖子的内容,我们可以编写一个简单的Node.js应用来获取并显示这些语录信息。我们将使用axios库来发送HTTP请求,并获取API返回的JSON数据。

示例代码

首先,确保安装了axios库:

npm install axios

然后创建一个简单的Node.js脚本来调用API:

const axios = require('axios');

async function fetchQuote() {
    try {
        const response = await axios.get('http://multimediaapi.elasticbeanstalk.com/quotes');
        const quotes = response.data;
        console.log(quotes);
    } catch (error) {
        console.error('Error fetching quote:', error.message);
    }
}

fetchQuote();

解释

  1. 引入axios: 我们使用axios来处理HTTP请求。
  2. 定义异步函数 fetchQuote: 使用await关键字等待API响应。
  3. 处理响应: 当API成功响应时,我们打印出响应的数据(语录信息)。
  4. 错误处理: 如果请求过程中出现任何问题,我们会捕获异常并在控制台中输出错误信息。

这段代码将会从指定的API端点获取语录信息,并将其打印到控制台上。如果你想要将这些信息展示在一个Web页面上,可以进一步扩展这个脚本,例如通过Express框架创建一个简单的Web服务器来展示这些语录。

扩展到Web应用

如果你想让这些信息可以通过浏览器访问,你可以结合Express.js来创建一个简单的Web服务:

const express = require('express');
const axios = require('axios');
const app = express();

app.get('/quotes', async (req, res) => {
    try {
        const response = await axios.get('http://multimediaapi.elasticbeanstalk.com/quotes');
        res.json(response.data);
    } catch (error) {
        res.status(500).send('Error fetching quotes');
    }
});

app.listen(3000, () => {
    console.log('Server running on port 3000');
});

在这个例子中,我们创建了一个简单的Express应用,它监听3000端口,并提供一个/quotes路由,该路由会从远程API获取数据,并以JSON格式返回给客户端。

回到顶部