请教:编写一个简单的 api 需要哪些知识

2021-05-28 12:32:20 +08:00
 ghmum

如果想在服务器上编写一个简单的 api,例如:在服务器上定时从天气网站获取天气信息,并把天气信息处理成 json,从外部访问服务器指定端口就获得这个 json

俺现在只懂这一些:

俺现在能理解的是:要实现这个,应该很简单,只需要在类似于 apache 的服务程序里放置一个文件,当从外部请求这个文件时,就调用 python 把 json 返回去。

但是俺完全不了解 apache,属于小白,也没有系统学过计算机方面的知识,对很多常用的工具都不熟悉,甚至说是不知道。 自行网上搜索了一下,大部分教程都建议用到一个叫做 flask 的框架,但俺感觉这个简单的 api 应该不需要用到这把牛刀

请各位大佬能帮忙罗列一下为了实现这个想法,需要去学习哪些知识,如果能顺便给出教程链接那就最好啦,俺先谢过各位大佬。

1786 次点击
所在节点    问与答
11 条回复
asanelder
2021-05-28 12:40:53 +08:00
和 apache 没关
flask 牛刀也可以小试

http://www.pythondoc.com/flask-restful/first.html

看这一篇跟着做就完事了
fightingZ
2021-05-28 14:48:25 +08:00
https://blog.csdn.net/qq_42685012/article/details/101061451 这篇也是 python + linux 定时抓天气的,通过企业微信机器人发出去,感觉和你需求差不多。
Puteulanus
2021-05-28 15:08:13 +08:00
简单的 API 可以用 Gunicorn 直接跑
http://leijingwei.com/posts/gunicorn%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/

Apache 和 Nginx 最好学一个,和你理解的确实差不多,就是 Python 的 web server 跑起来之后(比如监听 8080) Nginx 那边增加一个配置 proxy_pass http://127.0.0.1:8080 就行了

PS:确认一下,你知道端口是什么吧,不知道可能需要看一点基本的网络知识
roudancongji
2021-05-28 15:15:22 +08:00
需要 10 年 Java 经验
cmdOptionKana
2021-05-28 15:17:21 +08:00
建议学 flask
zdndk598
2021-05-28 15:26:33 +08:00
说个联系方式啊……不然人怎么教你
falcon05
2021-05-28 15:33:19 +08:00
1. http server
2. cron
arischow
2021-05-28 15:54:42 +08:00
> 在服务器上定时从天气网站获取天气信息,并把天气信息处理成 json

写一个 Python 脚本,并做成定时任务。

定时任务怎么设置,Google 一下,关于定时任务「如何定时」可以参考: https://crontab.guru/

> 从外部访问服务器指定端口就获得这个 json

flask 并不算牛刀,如果你想专注于达到你的目标,你去稍微搜索几个 flask 的简单例子就能解决你的问题了。

如:
https://flask.palletsprojects.com/en/2.0.x/quickstart/#a-minimal-application
https://stackoverflow.com/questions/13081532/return-json-response-from-flask-view

---

你不需要了解 apache 就能达到你的目标。
shuxhan
2021-05-28 16:37:29 +08:00
ghmum
2021-05-29 22:16:25 +08:00
@arischow

我采取的方式大概就是这样的,写了一个 python 脚本,定时获取天气并处理成 json,但是将 json 文件放置在 apache 服务的 html 文件夹里,然后访问获取

想请教一下,您提到的“从外部访问服务器指定端口就获得这个 json”,如何实现这样的功能呢?我个人的理解是:从外部访问服务器的指定端口,但应该不能直接获取到储存在服务器上的文件。难道有设置可以把端口映射到文件吗?
arischow
2021-05-31 12:43:04 +08:00
@ghmum

> 从外部访问服务器的指定端口,但应该不能直接获取到储存在服务器上的文件。

在 HTTP API (flask) 接口中读取这个 json 文件再返回即可。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/779790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX