使用Pyramid和Cornice构建和描述可扩展的RESTfulWeb服务。Python是一种高级的、面向对象的编程语言,以其简单的语法而闻名。它一直是构建RESTfulAPI的顶级编程语言之一。Pyramid是一个PythonWeb框架,旨在随着您的应用程序扩展而扩展:这允许简单的应用程序成长为大型、复杂的应用程序。此外,Pyramid为PyPI(Python包索引)提供了强大的支持。Cornice有助于使用Pyramid构建和描述RESTfulWeb服务。本文将使用Web服务检索名言的示例来展示如何使用这些工具。构建Pyramid应用程序首先为您的应用程序创建一个虚拟环境和一个用于保存代码的文件:$mkdirtutorial$cdtutorial$touchmain.py$python3-mvenvenv$sourceenv/bin/activate(env)$pip3安装cornicetwisted导入Cornice和Pyramid模块使用以下命令导入这些模块:frompyramid.configimportConfiguratorfromcorniceimportServicedefineservice将报价服务定义为服务对象:QUOTES=Service(name='quotes',path='/',description='Getquotes')编写报价逻辑目前为止这只支持获取报价。用QUOTES.get修饰函数。以下是将逻辑绑定到REST服务的方法:@QUOTES.get()defget_quote(request):return{'WilliamShakespeare':{'quote':['爱所有人,相信少数人,做错事,不要做错事','有些人天生伟大,有些人成就伟大,有些人是强加于他们的伟大。']},'Linus':{'quote':['空谈是廉价的。显示代码。']}}与其他框架不同,装饰器不会更改get_quote函数。如果您导入该模块,您仍然可以定期调用该函数并检查结果。这在为PyramidRESTful服务编写单元测试时很有用。定义application对象最后,使用scan找到所有被修饰的函数并将它们添加到配置中:withConfigurator()asconfig:config.include("cornice")config.scan()application=config.make_wsgi_app()defaultscancurrent模块。如果您想扫描包中的所有模块,您还可以提供包的名称。运行服务我使用Twisted的WSGI服务器来运行应用程序,但如果需要,您可以使用任何其他WSGI服务器,例如Gunicorn或uWSGI。(env)$python-mtwistedweb--wsgi=main.application默认情况下,Twisted的WSGI服务器运行在端口8080上。您可以使用HTTPie测试该服务:(env)$pipinstallhttpie...(env)$httpGET
