📅  最后修改于: 2023-12-03 15:42:27.616000             🧑  作者: Mango
日出日落时间查找器是一款可以帮助用户查找全球任何一个城市今日和未来七天的日出日落时间的应用。
通过将该应用集成到其它天气预报应用中,用户可以更便捷地获取天气信息,并更好地规划自己的时间。
本项目采用前后端分离的模式,前端使用React框架,后端使用Node.js+Express.js,数据库使用MongoDB,云服务使用AWS。
系统架构如下图所示:
![系统架构图](./architecture.png)
系统采用以下设计模式:
├── client # 前端代码目录
│ ├── public # 静态资源目录
│ ├── src # 页面组件目录
│ ├── package.json
│ └── ...
├── server # 后端代码目录
│ ├── index.js # 服务启动入口
│ ├── router.js # 路由配置
│ ├── dao # 数据库访问层
│ ├── service # 业务逻辑层
│ ├── util # 工具包
│ ├── package.json
│ └── ...
├── db # 数据库目录
├── package.json
├── architecture.png # 系统架构图
└── README.md
以下是查询日出日落时间的API示例代码:
```javascript
// API endpoint
app.get('/api/sunrise-sunset', async (req, res, next) => {
const { city } = req.query;
try {
const sunriseSunsetData = await SunService.getSunriseSunsetTime(city);
return res.json(sunriseSunsetData);
} catch (e) {
next(e);
}
});
// Service
class SunService {
static async getSunriseSunsetTime(city) {
const data = await APIService.get({
url: 'https://api.sunrise-sunset.org/json',
params: {
q: city,
},
});
return data.results;
}
}
// API service
class APIService {
static async get({ url, params = {} }) {
const queryString = Object.entries(params)
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join('&');
const apiUrl = `${url}?${queryString}`;
const response = await fetch(apiUrl);
return await response.json();
}
}
以上是本项目的介绍,希望对程序员们有所帮助。