使用 Python 和 Flask 设计 RESTful API

简介:

自从Roy Fielding博士在2000年他的博士论文中提出REST(Representational State Transfer)风格的软件架构模式后,REST就基本上迅速取代了复杂而笨重的SOAP,成为Web API的标准了。

如果一个URL返回的不是HTML,而是机器能直接解析的数据,这个URL就可以看成是一个Web API。

REST就是一种设计API的模式。最常用的数据格式是JSON。

比方说下载最流行的AI技术,百度这个流氓还是开放了API接口,供我们有限度的免费调用。

这个使用的就是API。

学习RESTful API,对我们以后使用别人开放的API又很大的好处

我们一起来看看RESTFul API有哪些特点:

  1. 基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。
  2. 无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。
  3. URL中通常不出现动词,只有名词
  4. URL语义清晰、明确
  5. 使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查
  6. 使用JSON不使用XML

    我举个例子:
    网站:/get_user?id=3
    RESTFul: GET /user/3 (GET是HTTP类型)


作者:
链接:https://www.imooc.com/article/17650
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

一:使用RESTful API的好处

1.返回的不是HTML,而是机器能直接解析的数据

随着ajax的流行,API返回数据,而不是HTML页面,数据交互量减少,用户体验会好。

前后台分离,后台更多的进行数据处理,前台对数据进行渲染。

2.直接使用api可以进行CRUD,增删改查

一个标准的API,会有4个接口,get,put,post,delete,对应你的请求类型。就是WEB获取页面,上传表单,上传文件…………

增删改查,结构清晰

3.使用token令牌来进行用户权限认证,比cookie更安全

虽然我还没明白这是什么意思,但是cookie确实是我爬网站时使用最多的伪造渠道。

4.越来越多的开放平台,开始使用api接口

我们学习了如果构建API,那么也就熟悉了解了如何使用,对以后使用开放API,又很大的帮助。

也许某天,我们自己写的程序,也会开放一些API接口给大家用,那也应该符合RESTful API标准。

 

二:快速入门

1.官网

其实这个不是官网,但是是中文文档。

http://www.pythondoc.com/Flask-RESTful/quickstart.html

2.安装

安装 Flask 和 Flask-RESTful。

本人测试环境如下:

Flask==1.0.2
Flask-HTTPAuth==3.2.4
Flask-RESTful==0.3.6
requests==2.19.1
python 3.6.3
windows 10 x64

3.无脑测试

快速入门当中的代码貌似和我现在的版本不太匹配了。

下面这个是我改好的。

from flask import Flask
from flask_restful import Api,Resource

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True)

这个代码跑起来看看访问:http://127.0.0.1:5000,返回值是

{
    "hello": "world"
}

而且我们没有注册首页路由,用了api.add_resource.。

返回的是一个JSON格式字符串。

三:用requests库深入测试

1.get就是我们日常浏览器访问的方式

没错,就是爬虫用的requests库。

from requests import get,put,post,delete
#测试get
t1=get('http://127.0.0.1:5000')
print(t1)
#返回码
print(t1.text)
#内容4

返回值:

200]>
{
    "hello": "world"
}

返回码200,返回的text是json数据

2.put

from requests import get,put,post,delete
#测试get
t1=put('http://127.0.0.1:5000')
print(t1)
#返回码
print(t1.text)
#内容

返回值:

405]>
{
    "message": "The method is not allowed for the requested URL."
}

还没写这个方法

我们没写都会有正确的信息返回,还是用库吧,比自己写方便多了。

主要是更加标准化。

四:

1.

2.

3.

五:

1.

2.

3.

六:

1.

2.

3.

七:

1.

2.

3.

八:

1.

2.

3.

九:

1.

2.

3.

十:

1.

2.

3.

转载于:https://www.cnblogs.com/jackadam/articles/9208013.html

你可能感兴趣的:(python,json,爬虫)