{ "info": { "author": "Imbolc", "author_email": "imbolc@imbolc.name", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "django-raw-api\n==============\nJSON API should be as simple as `dict` and status code :)\n\nHello world\n-----------\n```python\nfrom raw_api import validate_json\n\n@validate_json({\"name\": str})\ndef hello(request):\n name = request.json[\"name\"]\n if name == \"world\":\n return {\"message\": \"too corny\"}, 400\n return {\"hello\": name}\n```\n\nSetup\n-----\n- Install in from pypi: `pip install django-raw-api`\n- Add `raw_api.middleware` middleware into `MIDDLEWARE` list of your `settings.py`\n\nAPI\n---\n### Middleware\nIt adds lazy `request.json` attribute and serializes raw responses such as\n`dict` or `(data: dict, status: int)` into JSON.\n\n### Request\n\n- `request.json` - parsed json\n- `request.query` - parsed query (only after `@validate_query`)\n\n\n### Response\nYou can just return `dict` of your date or you can add a status code\n\n```python\ndef json_data(request):\n return {\"hello\": \"world\"}\n\ndef with_status(request):\n return {\"message\": \"bad request\"}, 400\n```\n\n\n### Auth\nDecorators `@user_required` and `@staff_required` is analogous to\n`@login_required` and `@staff_member_required` with JSON output instead of\nredirecting\n\n```python\nfrom raw_api import staff_required\n\n@staff_required\nasync def hello(request):\n return {\"admin\": \"zone\"}\n```\n\n\nData validation\n---------------\nYou can use `@validate_query` and `@validate_json` decorators\nto validate requests data. They're using [trafaret][] library to perform\nvalidation.\n\n```python\nfrom raw_api import validate_json, validate_query\n\n@validate_json({\"ids\": [int], \"hello?\": str})\nasync def foo(request):\n return request.json\n\n@validate_query({\"id\": int})\nasync def bar(request):\n assert isinstance(id, int)\n return request.query\n```\n\n\nTests\n-----\n```bash\n python -m venv .venv\n source .venv/bin/activate\n pip install -Ur requirements-dev.txt\n python -m pytest tests\n```\n\n[trafaret]: https://github.com/Deepwalker/trafaret\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/imbolc/django-raw-api", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-raw-api", "package_url": "https://pypi.org/project/django-raw-api/", "platform": "", "project_url": "https://pypi.org/project/django-raw-api/", "project_urls": { "Homepage": "https://github.com/imbolc/django-raw-api" }, "release_url": "https://pypi.org/project/django-raw-api/0.2.0/", "requires_dist": [ "django", "trafaret" ], "requires_python": "", "summary": "JSON API should be as simple as `dict` and status code :)", "version": "0.2.0" }, "last_serial": 5521806, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "81fe1ccfe15f9af7bdbf23eaadf235b4", "sha256": "d25b889ae8758e8b11f36d5f889cac10dd237aed74cb963934b115de7481e046" }, "downloads": -1, "filename": "django_raw_api-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "81fe1ccfe15f9af7bdbf23eaadf235b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3743, "upload_time": "2018-11-28T15:52:23", "url": "https://files.pythonhosted.org/packages/17/1e/29a7b47812bf0cf401dfeb643ca541bdf6288a1c535329bdf1be5dba9204/django_raw_api-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f01c9c012dc7350aac7b6667aaf1ccd9", "sha256": "0bdee1171db254064b8381e6e23270be270f61500cef7d280b39f33ec74438b0" }, "downloads": -1, "filename": "django-raw-api-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f01c9c012dc7350aac7b6667aaf1ccd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3607, "upload_time": "2018-11-28T15:26:18", "url": "https://files.pythonhosted.org/packages/10/72/ba4e7afaf54b84b019fd8435b483bdee5e30f4f76817c420b3d368e44e84/django-raw-api-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "575fb6591ae1b933ee8d953d6611f573", "sha256": "3dba72195b37bf5fe335e917871ab645e8c381c6d2baa5d063175f948f1f654a" }, "downloads": -1, "filename": "django_raw_api-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "575fb6591ae1b933ee8d953d6611f573", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3742, "upload_time": "2018-11-28T15:53:23", "url": "https://files.pythonhosted.org/packages/9b/3a/8e5e7df30493ee43bedf78d2fc95196e0731aa85c9be720447f3b564e3a0/django_raw_api-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c83ebafb2ad9494c6500201cdfbc350b", "sha256": "dba5905c1f462727539f651f2cd165e8a5776dc1e4ef566381cf679f98ab7972" }, "downloads": -1, "filename": "django_raw_api-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c83ebafb2ad9494c6500201cdfbc350b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3836, "upload_time": "2018-11-30T11:46:18", "url": "https://files.pythonhosted.org/packages/40/e8/cd385b6db4ba2e811326e830d3517ac468ba2ab1515886a3a8a34aa5b7f4/django_raw_api-0.1.2-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "07bf5dfedd6cee7d3ee5d8c7eb8b25ed", "sha256": "4d32f5ddbb0956aad77e466c376b31df98ef80e6d9afd10a5495596a00c86015" }, "downloads": -1, "filename": "django_raw_api-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "07bf5dfedd6cee7d3ee5d8c7eb8b25ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3940, "upload_time": "2019-07-12T06:12:27", "url": "https://files.pythonhosted.org/packages/bb/ee/40a4827a94ddd00c9827d710bc5ed29938b3bc4f83586660286e252a73da/django_raw_api-0.2.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "07bf5dfedd6cee7d3ee5d8c7eb8b25ed", "sha256": "4d32f5ddbb0956aad77e466c376b31df98ef80e6d9afd10a5495596a00c86015" }, "downloads": -1, "filename": "django_raw_api-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "07bf5dfedd6cee7d3ee5d8c7eb8b25ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3940, "upload_time": "2019-07-12T06:12:27", "url": "https://files.pythonhosted.org/packages/bb/ee/40a4827a94ddd00c9827d710bc5ed29938b3bc4f83586660286e252a73da/django_raw_api-0.2.0-py3-none-any.whl" } ] }