测试Flask REST服务器

2 投票
1 回答
2632 浏览
提问于 2025-04-18 16:15

我有一个小的Flask服务器,它的任务是从文件中加载数据,并对这些数据运行一个函数。这个函数会返回一个数据框(DataFrame),然后我把它转成json格式返回。让我惊讶的是,这一切都运行得很好。不过,我该怎么测试这个呢?我在下面列出了一些尝试,但我对Flask(和REST)还不是很了解:

#!/home/thomas/python
from flask import Flask
from flask.ext.restful import Resource, Api

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

class UniverseAPI(Resource):
    def get(self):
        import pandas as pd
        frame = pd.read_csv("//datasrv10//data$//AQ//test.csv", index_col=0, header=0)
        return frame.to_json()


api.add_resource(UniverseAPI, '/data/universe')

我很乐意在这里分享我的一些尝试... 感谢任何提示。我已经阅读了官方文档。

我需要说明一下我所说的测试是什么意思。我可以在我的Linux服务器上运行这个,并且可以使用requests库提取所有需要的信息。然而,我想创建一个单元测试,不需要在本地启动服务器。我想我已经用FLASK的测试客户端搞定了。不过,现在的问题是,requests的响应对象和Flask的响应对象对底层的json字符串处理得有点不同。所以我想我的问题更多是和json字符串有关,而不是FLASK本身。感谢大家的有用反馈!

1 个回答

0

写一个REST API的基本知识其实就是一套设计原则。我对这个的理解主要来自Miguel Grinberg的一篇文章,http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask

在这篇文章中,他提到REST API有以下特点:

  • “无状态” - 和服务的所有互动都可以通过一次请求中的信息来完成。

  • 基于使用HTTP请求(比如GET、PUT和POST)从URI访问“资源”。资源可以是商店中的订单、网页应用中的任务,或者你喜欢的任何东西。

还有很多关于服务器应该如何标准化与客户端之间的所有通信,是否可以进行缓存等内容。不过从最初的设计角度来看,他提到的“重点”是:

“设计一个符合REST指南的网络服务或API的任务,变成了识别将要暴露的资源以及它们如何受到不同请求方法影响的练习。”

如果你想找一个有趣的REST API例子,可能会对你有帮助(我知道对我有帮助),reddit的API是开源的。这个例子很贴近生活,可以看看他们是如何构建请求背后的互动的:http://www.reddit.com/dev/api

撰写回答