在Python中编写一个公开API的应用程序

时间:2015-02-27 12:15:23

标签: python api frameworks web-frameworks

作为练习,我想在Python中编写一个应用程序,它可以运行代码来管理资源或执行其他操作,同时可以为API提供服务,以便客户端可以通过网络与其进行通信。

此应用程序可以提供一个为客户端运行代码的环境,但验证用户是否可以执行它所请求的内容(查看它是否安全),然后继续运行运行状况检查(这些也可以是由用户指定应该如何运行。)

例如:

POST TO: https://api.service.com/login
{
    "username": "user1",
    "password": "password"
}

RESPONSE: 200 OK
{
    "token": "akJuHgehd...LNabCt"
}

POST TO: https://api.service.com/newResource
{
    "token": "akJuHgehd...LNabCt",
    "command": "start_daemon.sh",
    "health_check": "check_daemon.sh"
}

一旦应用程序确保允许用户user1运行start_daemon.sh并使用check_daemon.sh进行健康检查:

RESPONSE: 200 OK
{
    "service_id": "ahcyYDmD...PabYTEf"
}

然后,客户端可以在本地存储此ID以管理其资源,或者稍后向服务器询问有关所有自己的资源运行的信息,然后使用它来管理它们。

请注意,这不一定是RESTful API,只是一个通用的HTTP API,即使我使用的名称(如资源)和/newResource路径可能会建议它' sa RESTful API。

在我的研究中,我寻找了许多框架,可以轻松实现这个API。最容易允许的是Django。它允许直接的HTTP请求处理,JSON序列化,良好的ORM,可用于cookie和会话的身份验证框架以及许多其他即用型资源。但是在Django中运行的每个代码都必须由HTTP请求触发(据我所知):Django不允许在引导时运行的代码使用API​​,然后在此代码中我可以运行新的线程将准备基本的基础设施和安排运行健康检查的功能,并做任何其他必要的事情。

然后,还有其他框架,如Flask,Tornado和其他框架,但这些框架缺少许多功能,如身份验证,有时甚至是HTTP请求,ORM等的抽象。

然后,Python的标准库,如threadingBaseHTTPServer等,可以让我从头开始构建这个应用程序,但我不会&#39觉得有必要深入潜水。

所以实际的问题是:在Python中实现这个的方法是什么,哪一个最简单?为什么?

0 个答案:

没有答案