V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ghmum
V2EX  ›  问与答

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

  •  
  •   ghmum · 2021-05-28 12:32:20 +08:00 · 1755 次点击
    这是一个创建于 1273 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    俺现在只懂这一些:

    • 自己租了一台云服务器

    • 能远程连接到服务器,简单操作 Linux 的文件(知道 Linux 根目录下各个文件夹的主要作用,但网上对那些文件夹作用的描述我看懂有些懵逼,也许是一些基础概念确实导致的),会用 vim,但不会计划任务(网上查过资料,没看得不是非常懂),Linux 上安装软件这一些最基础的都会

    • 能写 python 代码,有能力写代码从天气网站获取源数据并处理成 json,别的编程语言就不会了。看得懂 JavaScript

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

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

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

    11 条回复    2021-05-31 12:43:04 +08:00
    asanelder
        1
    asanelder  
       2021-05-28 12:40:53 +08:00
    和 apache 没关
    flask 牛刀也可以小试

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

    看这一篇跟着做就完事了
    fightingZ
        2
    fightingZ  
       2021-05-28 14:48:25 +08:00
    https://blog.csdn.net/qq_42685012/article/details/101061451 这篇也是 python + linux 定时抓天气的,通过企业微信机器人发出去,感觉和你需求差不多。
    Puteulanus
        3
    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
        4
    roudancongji  
       2021-05-28 15:15:22 +08:00
    需要 10 年 Java 经验
    cmdOptionKana
        5
    cmdOptionKana  
       2021-05-28 15:17:21 +08:00
    建议学 flask
    zdndk598
        6
    zdndk598  
       2021-05-28 15:26:33 +08:00 via iPhone
    说个联系方式啊……不然人怎么教你
    falcon05
        7
    falcon05  
       2021-05-28 15:33:19 +08:00 via iPhone
    1. http server
    2. cron
    arischow
        8
    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 就能达到你的目标。
    ghmum
        10
    ghmum  
    OP
       2021-05-29 22:16:25 +08:00
    @arischow

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

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

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

    在 HTTP API (flask) 接口中读取这个 json 文件再返回即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:34 · PVG 02:34 · LAX 10:34 · JFK 13:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.