json api应该像“dict”和状态代码一样简单:)

django-raw-api的Python项目详细描述


django原始api

json api应该像dict和状态代码一样简单:)

你好,世界

fromraw_apiimportvalidate_json@validate_json({"name":str})defhello(request):name=request.json["name"]ifname=="world":return{"message":"too corny"},400return{"hello":name}

设置

  • 从pypi安装:pip install django-raw-api
  • raw_api.middleware中间件添加到MIDDLEWARE列表中

API

中间件

它添加lazyrequest.json属性并序列化原始响应,如 dict(data: dict, status: int)转换为json。

请求

  • request.json-解析的json
  • request.query-解析查询(仅在@validate_query之后)

响应

您可以只返回日期的dict,也可以添加状态代码

defjson_data(request):return{"hello":"world"}defwith_status(request):return{"message":"bad request"},400

认证

装饰符@user_required@staff_required类似于 @login_required@staff_member_required使用json输出而不是 重定向

fromraw_apiimportstaff_required@staff_requiredasyncdefhello(request):return{"admin":"zone"}

数据验证

您可以使用@validate_query@validate_json装饰符 以验证请求数据。他们用trafaret库来执行 验证。

fromraw_apiimportvalidate_json,validate_query@validate_json({"ids":[int],"hello?":str})asyncdeffoo(request):returnrequest.json@validate_query({"id":int})asyncdefbar(request):assertisinstance(id,int)returnrequest.query

测试

    python -m venv .venv
    source .venv/bin/activate
    pip install -Ur requirements-dev.txt
    python -m pytest tests

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

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序