Web API初体验——Python&易语言

      网上有很多API接口,只要简单的调用就可以获取到我们想要的信息,比如天气预报、每日一句等等。包括一些抢券活动,一般也是有API可以直接调用的。

      最开始调用自己的API函数应该是在腾讯云函数的时候,自己写了点破代码,设置了API网关,就可以用浏览器一键调用并返回数据,还挺好玩。

      这次就多了解了解并尝试自己搭建WebApi服务。

01 | WebApi是什么

      ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。ASP.NET Web API 是一种用于在.NET Framework 上构建 RESTful 应用程序的理想平台。

      可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等。

      WebApi类型项目的最大优势就是,开发者再也不用担心客户端和服务器之间传输的数据的序列化和反序列化问题,因为WebApi是强类型的,可以自动进行序列化和反序列化。Web API最重要的是可以构建面向各种客户端的服务。

02 | HTTP请求方法

HTTP/1.1协议中共定义了八种请求方法,来以不同方式操作指定的资源:

1. GET 

    请求指定的页面信息,并返回实体主体。用于从服务器端获取数据,且不应该对服务器端有任何操作和影响。

2. POST 

    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改,对服务器端产生影响。

3. PUT 

    从客户端向服务器传送的数据取代指定的文档的内容,意即用于向服务器端更新一条数据,对服务器端产生影响 (也可创建一条新的数据但不推荐这样用)。

4. DELETE 

    请求服务器删除指定的页面,对服务器端产生影响。

5. HEAD 

    类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

6. OPTIONS 

    允许客户端查看服务器的性能。

7. CONNECT 

    HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

8. TRACE 

    回显服务器收到的请求,主要用于测试或诊断。

      这样,前面四种请求方法刚好可对应于对数据的查询,添加,修改,删除。WebApi也推荐如此使用。在WebApi项目中,我们请求的不再是一个具体页面,而是各个控制器中的方法。Get类型的请求发送给以Get开头的方法去处理,Post类型的请求交给Post开头的方法去处理,Put和Delete同理。

而以Get开头的方法有好几个也是可以的,此时如何区分到底交给哪个方法执行呢?这就取决于Get开头的方法们的传入参数了,一会儿在代码中可以分辨。

03 | Python实践——FastAPI

      FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。关键特性:

快速:可与NodeJS和Go并肩的极高性能(归功于Starlette和 Pydantic),最快的 Python web 框架之一。

         用Python编写个简易的代码,首先pip uvicorn和fastapi两个库,分成两个文件,一个文件名随意,作用是启动服务,简称A文件;一个是api功能代码,简称B文件。A文件代码如下:

import uvicorn


if __name__ == '__main__':
    uvicorn.run(app='webapi:app', host='127.0.0.1', port=3000, reload=True)

代码中webapi:app为B文件的文件名和服务名称,所以B文件的文件名为webapi.py,里面的服务对象名称为app,并设置了IP地址和端口。B文件的代码如下:

from fastapi import FastAPI
import time,requests
app = FastAPI()


@app.get("/")
def info():
    return {"key": "欢迎关注【偶尔敲代码】"}


@app.get("/time")
def info():
    t = int(time.time())
    return {"time": str(t)}


#
@app.get("/yy")
def info():
    r = requests.get("https://apis.jxcxin.cn/api/yiyan?type=json")
    print(r)
    return r.text

B文件的代码中定义了3个api功能,分别是"/"、"/time"和"/yy"。

将AB两个文件运行起来,就相当于把webapi服务启动了。这时结合我们A文件定义的IP地址和端口,在浏览器上直接访问:http://127.0.0.1:3000

可触发api中的"/"功能,会按照B代码中的设定返回结果。

5382edf14fbda2c3e8887ba1e9b228c2.png

在浏览器上直接访问http://127.0.0.1:3000/time,可触发api中的"/time"功能:

62ee77af3e44a1242bcd5167b3ad2e78.png

在浏览器上直接访问http://127.0.0.1:3000/yy,可触发api中的"/yy"功能:

5a3d30f71337f279ec611f6f49877fff.png

等调试好后,将上面的文件部署在服务器上,并修改相应的IP地址为服务器公网IP,开放对应的端口号即可实现访问。

04 | 易语言实践——WebAPI框架

        这是网上找的一个WebAPI框架,我只要写相关API功能的插件即可,就跟上面Python的B文件一个意思,还是挺方便的。功能大概就是这样,服务器运行框架,然后加载自己的插件,在插件中定义好自己的调用方法。

2fada0a355fc0194f0dc69d7eeb4e4dc.png

总结:

1. WebApi这东西对于跨平台很方便,只要会调用http命令即可;

2. 自己搭建需要有自己的服务器

- End -

更多精彩文章

点击下方名片关注【偶尔敲代码】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值