在瓶式web框架开发中构建webapi的有用装饰器

bottle-api的Python项目详细描述


安装

$ pip install bottle-api

基本用法

json_endpoint decorator将生成一个函数到json webapi endpoint。 修饰函数将返回balt.httpresponse。

查看此示例Web应用:

#!python
from bottleapi import WebApiError
from bottleapi.jsonapi import json_endpoint
from bottle import Bottle, request

app = Bottle()

@json_endpoint
def devide():
    a = int(request.params['a'])
    b = int(request.params['b'])
    if b == 0:
        raise WebApiError('b cannot be zero', status=400)

    result = a / b
    return dict(value=result)

app.route('/devide', ['GET'], devide)

如果您访问/device?a=1&b=1,它将返回200 OK响应,正文:

{"status": "ok", "result": {"value": 1}}

内容类型为application/json

但是当您访问device?a=1&b=0时,您将获得400 BAD REQUEST响应,其正文为:

{"status": "error", "message": "b cannot be zero", "result": null}

如果要使用jsonp,可以用参数指定回调函数名(默认情况下,j) 因此,访问/device?a=4&b=2&j=my_callback将导致:

my_callback({"status": "ok", "result": {"value": 2}});

如果不喜欢参数或结果数据格式,可以定义自己的格式化程序(成功/错误)。 有关自定义格式化程序示例,请参见jsonapi.py。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jframe为什么JAVA paint()方法不起作用?   java Guice:将ContainerRequestContext注入拦截器   java如何优雅地关闭Spring JMS MessageListenerAdapter   java如何在Spring中设置快照隔离级别   Java中的安卓平台独立信任存储路径   java无法在eclipse中运行hello world程序   java Sinch空指针问题   使用Java将JSON流式传输到BigQuery   java从“大数据”中选择什么Swing控件?   java通过对象字段过滤/排序集合?   java将数据从活动传递到另一个活动中的片段   java访问打包在jar文件中的文档   Java获取事件的大小。getDragboard()。getFiles()。流()。映射(文件::长度)。toString());   java Android libgdx:启动程序图标按下后,启动屏幕不会立即显示   java如何在Google App Engine灵活环境中配置oracle jdk   java有没有办法减少这些行?   Java:客户端socket不读取第二行,在终止符行之后保持打开状态   java以编程方式获取api 29上的所有APK文件   java ActionBar按钮不显示