• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > python RESTful API框架:Eve 快速入门,pythonrestful

python RESTful API框架:Eve 快速入门,pythonrestful

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含python restful api,python restful,python restful框架,restful api,restful api是什么等服务器相关知识,网友希望可以进行参考

python RESTful API框架:Eve 快速入门,pythonrestful


Eve是一款Python的REST API框架,用于发布高可定制的、全功能的RESTful的Web服务,帮你轻松创建和部署API,本文翻译自Eve官方网站:
http://python-eve.org/quickstart.html#database-interlude

Eve 快速入门:
渴望开始吗?这个页面将提供Eve一个很好的介绍。在这之前假设:
你已经安装好了Eve。如果你还没有,可以点击到安装页面。
已经安装了MongoDB。
并且MongoDB 已经运行了。
一个最小的应用
一个最小的Eve应用,看起来是这样的:

from eve import Eve
app = Eve()

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

然后保存为run.py,接着创建一个新的文档包含已经内容:

DOMAIN = {'people': {}}

接着保存为settings.py,并且放在run.py相同的文件夹下。
这是Eve的配置文件,一个标准的python模块,这个文件告诉了Eve你的API包含了一个可访问的资源,people。

现在你已经准备好启动你的API了。

$ python run.py
 * Running on http://127.0.0.1:5000/

现在你已经可以使用这个API了:

$ curl -i http://127.0.0.1:5000
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 82
Server: Eve/0.0.5-dev Werkzeug/0.8.3 Python/2.7.3
Date: Wed, 27 Mar 2013 16:06:44 GMT

恭喜,你的GET请求已经得到了一个很好的响应返回,让我们看看这个有效负载:

{
    "_links": {
        "child": [
            {
                "href": "people",
                "title": "people"
            }
        ]
    }
}

API接入点遵循着HATEOAS(超媒体即状态应用引擎)原则和规定API资源访问信息,在我们的例子中只提供了一个可用child的资源,这里是people。

现在尝试请求people:

$ curl http://127.0.0.1:5000/people
{
    "_items": [],
    "_links": {
        "self": {
            "href": "people",
            "title": "people"
        },
        "parent": {
            "href": "/",
            "title": "home"
        }
    }
}

这次我们也得到了一个_items 表,_links 相对于是被访问的资源,所以你得到了父资源链接(主页)和资源本身。

默认情况下Eve 的APIs是只读的:

$ curl -X DELETE http://127.0.0.1:5000/people
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method DELETE is not allowed for the requested URL.</p>

这是因为我们还没有在settings.py中规定任何的数据库细节,所以Eve会在无法索引到任何people表实际的内容(甚至可能不存在)时无缝得提供一个空的资源,因为我们不想让API的使用者down(不知道译成什么好…)。
插入数据库
让我们通过增加下面几行到setting.py来连接数据库:

# 根据编辑需要,让我们使用本地mongod实例

# 需要注意的是MONGO_HOST 和 MONGO_PORT很有可能会无效,因为默认存在本地系统的值。

MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'user'
MONGO_DBNAME = 'apitest'

由于MongoDB便捷性,我们不需要真正得去创建数据表,实际上我们甚至不需要创建数据库:GET 请求空的或不存在的数据库是会返回正确(200 OK会得到一个空集合(表));DELETE/PATCH/PUT会得到适当的响应(404 Not Found),POST请求会创建所需的数据库或表。然而这样的自动管理的数据库会执行得非常差,因为缺少了索引和任何形式的优化。
一个更复杂的应用
到目前为止我们的API都是只读的,让我们能够全面得进行CRUD(增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))运作:

# 授权资源、数据库  读 (GET), 插入 (POST) and 删除 DELETE
# (如果你省略这行, API将默认是 ['GET'] 和 提供只读权限访问端点).
# RESOURCE资源,METHODS方法

RESOURCE_METHODS = ['GET', 'POST', 'DELETE']

# 允许 读 (GET), 编辑 (PATCH), 替换 (PUT) 和删除 个人项目 items  (默认访问项目是只读).
# ITEM 项目

ITEM_METHODS = ['GET', 'PATCH', 'PUT', 'DELETE']

当ITEM_METHODS 列表中的方法授权给项目端点(/people/)时RESOURCE_METHODS表中的方法才授权资源端点(/people)。都设置则会有一个全局作用域并使所有的端点都有效。然而你也可以启用或者禁用单个端点的HTTP方法等级,我们很快就能看到。
由于我们允许了编辑了,我们也希望让数据可以进行合适验证。让我们为people资源定义一种模式。

schema = {
  # 模式定义, 基于 Cerberus 语法. 核实 Cerberus 项目细节在
    # (https://github.com/nicolaiarocci/ce
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • python RESTful API框架:Eve 快速入门,pythonrestful

相关文章

  • Elasticsearch之Nested Object Mapping,elasticsearch
  • Elasticsearch 之 Facet,elasticsearchfacet
  • 你真的了解OpenStack吗?学过的人,都知道!,了解openstack
  • IBM Symphony开发,ibmsymphony开发
  • 云服务器之间实时文件同步和文件备份的最简单高效的免费方案,实时文件备份
  • HBase安装配置
  • input from 表单提交 使用 属性 disabled=&quot;disabled&quot; 后台接收不到name=&quot;username&quot;的值,disabledusername
  • hadoop文件系统详解--(1),
  • &lt;转&gt;Openstack Ceilometer监控项扩展,openstackceilometer
  • 运行spark-shell时遇到的主机地址的错误,spark-shell主机

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 《转》OpenStack Keystone的基本概念理解,《转》openstack
    • 一篇博文简单了解weka,博文简单weka
    • mongodb基础操作,mongodb基础
    • 浅谈SaaS应用开发的难度,浅谈saas应用开发
    • hadoop修改启动主机名称
    • 企业的云之旅程,企业云之旅程
    • 关于Oozie的input-events和done-flag,oozieinput-events
    • 创建GZIP压缩格式的HIVE表,gzip压缩格式hive
    • MyEclipse字体和保护色设置,myeclipse保护色
    • HDFS读文件解析,

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有