Api开发利器Bottle

简介: Api开发利器Bottle

前言


前面我们介绍了很多 API 开发框架,比如FastApiHug等。今天我们继续介绍一款超轻的 web 框架 Bottle,它的使用和 FlaskHug 一样简单。


呆猫


安装 Bottle


pip install bottle
复制代码


Hello World


from bottle import route, run
@route('/hello')
def hello():
    return "Hello World!"
run(host='localhost', port=8080, debug=True)


网络异常,图片无法展示
|


网络异常,图片无法展示
|


如上我们已经实现了 hello world,但是这不是面向对象的方式,我们可以使用面向对象的方式,先实例化一个 bottle 对象,然后在这个对象上进行路由等操作。


就像这样:


from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
    return "Hello World!"
run(app, host='localhost', port=8080)
复制代码


如上两种方式都可以实现 api 的开发,你可以根据自己喜好进行选择,但是个人比较推荐面向对象的写法。


路径参数


路径参数就是 URI 中的参数,我们可以通过 URI 进行参数的传递和处理。


from bottle import Bottle, run, template
app = Bottle()
@app.route('/hello')
def hello():
    return "Hello World!"
@app.route('/sayhi/<name>')
def sayhi(name='default'):
    return f'hi,{name}'
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


请求参数


请求参数就是在 URL 后面拼接的参数,使用?进行连接。


from bottle import Bottle, run,request
app = Bottle()
@app.route('/myinfo')
def myinfo():
    return f"我的姓名是:{request.params['name']},我的年龄是:{request.params['age']}"
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


模板渲染


和其他 web 框架一样,bottle 的模板渲染也是将 html 内容渲染到浏览器。bottle 渲染支持 tplhtml 两种文件,你可以自由选择。


注意,bottle 是在项目根路径和./views/*两个路径下进行模板文件的扫描,通常建议将模板文件统一放到./views/下。


from bottle import Bottle, run,request,template
app = Bottle()
@app.route('/tm')
def tm(tinfo='template'):
    return template('index',tinfo=tinfo)
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


bottle 不但支持使用 templates 方法来进行页面渲染,也支持使用 view 装饰器进行渲染。

就像这样:


from bottle import Bottle, run,request,template,view
app = Bottle()
@app.route('/tm')
@view('index')
def tm(tinfo='template-view'):
    return dict(tinfo=tinfo)
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


我们结合请求参数看下效果:


from bottle import Bottle, run,request,template,view
app = Bottle()
from urllib import parse
@app.route('/tm')
@view('index')
def tm():
    a=request.query['gg']
    b = parse.unquote_plus(a)
    print(b)
    return dict(tinfo=request.params['gg'])
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


自定义 404 等页面


bottle 支持 error 装饰器来拦截错误码进行统一的错误页面展示。


from bottle import Bottle, run,request,template,view
app = Bottle()
@app.error(404)
def error404(error):
    return f'Python全栈开发提醒您:啥都没找到!{error}'
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


重定向


重定向,顾名思义就是访问 a,然后服务器向浏览器发送的重定向指令,让浏览器去访问 b


from bottle import Bottle, run,request,template,view,redirect
app = Bottle()
@app.route('/hello')
def hello():
    return "Hello World!"
@app.get('/red')
def red():
    redirect('/hello')
run(app, host='localhost', port=8080)
复制代码


网络异常,图片无法展示
|


热加载


你可能已经发现前面的操作都是需要手动进行服务器的重启的,其实 bottle 也支持开

发服务器的热加载,你只需要在 run 方法中增加 reloader=True 的配置即可。这样当你修改了代码的时候,bottle 就会自动加载了。


总结


内容有限,以上我们只演示了 bottle 的基本功能,从这些演示中我们已经发现 bottle 的使用非常简答,很多的特性一个装饰器就能搞定,感兴趣的同学可以动手试试。更多的内容请关注 bottle 的官方文档:bottlepy.org/docs

相关文章
|
6天前
|
缓存 监控 API
构建高效可扩展的RESTful API:后端开发的实践指南
【4月更文挑战第26天】在现代Web开发中,构建一个高效、可扩展且易于维护的RESTful API是后端工程师必须面对的挑战。本文将深入探讨如何利用最佳实践和流行技术,设计出符合REST架构原则的服务端接口。我们将重点讨论API版本控制、资源路由、数据库优化、缓存策略以及安全性考虑等方面,旨在为开发者提供一套综合性解决方案,帮助其提升API的性能与可靠性。
|
2月前
|
缓存 安全 测试技术
构建高效的RESTful API:后端开发的实践指南
【2月更文挑战第17天】在数字化转型的浪潮中,RESTful API已成为连接不同软件组件、实现数据交互的核心桥梁。本文将深入探讨如何构建一个高效、可扩展且安全的RESTful API,涉及设计原则、开发流程以及性能优化等关键方面。我们将透过实际案例,展示如何在保证简洁性和灵活性的同时,满足日益增长的业务需求和技术挑战。
|
2月前
|
API
uni-app 146朋友圈列表api开发
uni-app 146朋友圈列表api开发
19 0
|
1月前
|
存储 编解码 网络协议
FFmepg 核心开发库及重要数据结构与API
FFmepg 核心开发库及重要数据结构与API
29 0
|
3天前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
|
2天前
|
缓存 前端开发 搜索推荐
【Flutter前端技术开发专栏】Flutter中的自定义绘制与Canvas API
【4月更文挑战第30天】Flutter允许开发者通过`CustomPaint`和`CustomPainter`进行自定义绘制,以实现丰富视觉效果。`CustomPaint` widget将`CustomPainter`应用到画布,而`CustomPainter`需实现`paint`和`shouldRepaint`方法。`paint`用于绘制图形,如示例中创建的`MyCirclePainter`绘制蓝色圆圈。Canvas API提供绘制形状、路径、文本和图片等功能。注意性能优化,避免不必要的重绘和利用缓存提升效率。自定义绘制让Flutter UI更具灵活性和个性化,但也需要图形学知识和性能意识。
【Flutter前端技术开发专栏】Flutter中的自定义绘制与Canvas API
|
2天前
|
存储 关系型数据库 Go
【Go语言专栏】基于Go语言的RESTful API开发
【4月更文挑战第30天】本文介绍了使用Go语言开发RESTful API的方法,涵盖了路由、请求处理、数据存储和测试关键点。RESTful API基于HTTP协议,无状态且使用标准方法表示操作。在Go中,通过第三方库如`gorilla/mux`进行路由映射,使用`net/http`处理请求,与数据库交互可选ORM库`gorm`,测试则依赖于Go内置的`testing`框架。Go的简洁性和并发性使得它成为构建高效API的理想选择。
|
3天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
3天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
【4月更文挑战第29天】本文探讨了在Web开发中流行的前后端分离模式,重点介绍了RESTful API的设计与实现。REST是一种基于HTTP协议的架构风格,核心概念包括资源、表述和状态转换。RESTful API设计遵循无状态、统一接口等原则,使用GET、POST、PUT、DELETE等HTTP方法执行操作,并通过状态码和JSON/XML传输数据。在PHP中实现RESTful API,可通过定义路由、创建控制器、处理请求和响应,同时注意安全性措施,如使用HTTPS。文中还提供了一个用户管理API的实战示例,以帮助读者更好地理解和应用RESTful API。
|
9天前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
12 0