请教:编写一个简单的 api 需要哪些知识 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ghmum
V2EX    问与答

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

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

    如果想在服务器上编写一个简单的 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
    说个联系方式啊……不然人怎么教你
    GG668v26Fd55CP5W
        7
    GG668v26Fd55CP5W  
       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     Solana     937 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:20 PVG 03:20 LAX 12:20 JFK 15:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86