Name | jsend2 JSON |
Version | 0.0.8 JSON |
download | |
home_page | |
Summary | |
upload_time | 2024-03-03 05:35:30 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.9 |
license | |
keywords | fastapi django jsend |
VCS | |
bugtrack_url | |
requirements | No requirements were recorded. |
Travis-CI | No Travis. |
coveralls test coverage | No coveralls. |
# jsend-python This is a package to response jsend-like format ## requirements ```bash pip install django djangorestframework ``` ## Installation <!-- ```bash pip install jsend2 ``` --> ```bash pip install git+https://github.com/Visapick-Team/jsend-python.git ``` # Response ### Django settings.py ```python INSTALLED_APPS = [ ... "jsend2", ] ``` ```python REST_FRAMEWORK = { # jsend2 limit/offset pagination "DEFAULT_PAGINATION_CLASS": "jsend2.django.utils.JSendLimitOffsetPagination", # jsend2 response "DEFAULT_RENDERER_CLASSES": [ "jsend2.django.utils.JSendRenderer", ], } ``` ## output ```json { "status": "faild", "message": "Any message", "data": { ... }, "code": "-100", "total": 100, "offset": 12 } ``` `status: str` + required + API status as a string, standard values are `success`, `fail` and `error`. `message: str` + optional + Default is None and **not** included in response. `data: Any` + required + The original result of API response. `code: int` + optional + Default is None and **not** included in response. `total: int` + optional + Total objects retrieved if the result is paginated. `count: int` + optional + Object's count in the data if the result is paginated. `offset: int` + optional + Object's offset if the result is paginated. `` ### FastAPI main.py ```python from fastapi import FastAPI from fastapi_pagination import add_pagination from router import router app = FastAPI() app.include_router(router) add_pagination(app) ``` router.py ```python from fastapi import APIRouter from fastapi import Query from pagination import Pagination from response import Response router = APIRouter() ``` #### single Object ```python @router.get( "/user", response_model=Response[UserOut], response_model_exclude_none=True ) async def get_user(user_id: int = Query(ge=0)): user: UserOut = find_user(user_id) return Response( data=user, status="success" # default 'success' ) ``` #### Paginated ```python @router.get( "/users", response_model=Pagination[UserOut], response_model_exclude_none=True ) async def get_users(): response = paginate(users) response.status = "success" # default 'success' return response ``` # Exception Handling ### Django settings.py ```python REST_FRAMEWORK = { # jsend2 exception handler "EXCEPTION_HANDLER": "jsend2.django.exception.jsend_exception_handler", } ``` urls.py (Project urls) ```python from jsend2.django.exception import myhandler400, myhandler403, myhandler404, myhandler500 handler500 = myhandler500 handler404 = myhandler404 handler400 = myhandler400 handler403 = myhandler403 ``` ### FastAPI main.py ```python from fastapi import FastAPI, HTTPException from api import router from src.jsend2.jfast.exception import ExceptionMiddleware app = FastAPI() app.include_router(router) ExceptionMiddleware(app) ```
{ "_id": null, "home_page": "", "name": "jsend2", "maintainer": "", "docs_url": null, "requires_python": ">=3.9", "maintainer_email": "", "keywords": "fastapi,django,jsend", "author": "", "author_email": "Mohammadreza ZOLGHADRI <zolghadri1999@email.com>, Amirreza Taherkhani <amirrezataherkhaani@gmail.com>", "download_url": "https://files.pythonhosted.org/packages/8f/9c/3f810de613a8f6abcdbb61e56712e5a240beafc4fa864508dc0e89f872bf/jsend2-0.0.8.tar.gz", "platform": null, "description": "# jsend-python\nThis is a package to response jsend-like format\n\n\n## requirements\n```bash\npip install django djangorestframework\n```\n\n\n## Installation\n\n<!-- ```bash\npip install jsend2\n``` -->\n\n```bash\npip install git+https://github.com/Visapick-Team/jsend-python.git\n```\n\n\n# Response\n\n\n### Django\n\nsettings.py\n```python\nINSTALLED_APPS = [\n ...\n \"jsend2\",\n]\n```\n\n```python\nREST_FRAMEWORK = {\n # jsend2 limit/offset pagination \n \"DEFAULT_PAGINATION_CLASS\": \"jsend2.django.utils.JSendLimitOffsetPagination\",\n \n # jsend2 response\n \"DEFAULT_RENDERER_CLASSES\": [\n \"jsend2.django.utils.JSendRenderer\",\n ],\n}\n\n```\n\n\n\n## output\n\n```json\n{\n \"status\": \"faild\",\n \"message\": \"Any message\",\n \"data\": {\n ...\n },\n \"code\": \"-100\",\n \"total\": 100,\n \"offset\": 12\n\n}\n```\n`status: str`\n+ required\n+ API status as a string, standard values are `success`, `fail` and `error`.\n\n\n`message: str`\n+ optional\n+ Default is None and **not** included in response. \n\n`data: Any`\n+ required\n+ The original result of API response. \n\n`code: int`\n+ optional\n+ Default is None and **not** included in response. \n\n\n`total: int`\n+ optional\n+ Total objects retrieved if the result is paginated.\n\n`count: int`\n+ optional\n+ Object's count in the data if the result is paginated. \n\n\n`offset: int`\n+ optional\n+ Object's offset if the result is paginated. \n\n``\n\n\n### FastAPI\nmain.py\n```python\nfrom fastapi import FastAPI\nfrom fastapi_pagination import add_pagination\nfrom router import router\n\napp = FastAPI()\n\napp.include_router(router)\n\nadd_pagination(app)\n\n```\n\nrouter.py\n```python\nfrom fastapi import APIRouter\nfrom fastapi import Query\nfrom pagination import Pagination\nfrom response import Response\n\nrouter = APIRouter()\n```\n\n#### single Object\n```python\n@router.get(\n \"/user\",\n response_model=Response[UserOut],\n response_model_exclude_none=True\n )\nasync def get_user(user_id: int = Query(ge=0)):\n user: UserOut = find_user(user_id)\n return Response(\n data=user,\n status=\"success\" # default 'success'\n )\n```\n\n\n#### Paginated \n```python\n@router.get(\n \"/users\",\n response_model=Pagination[UserOut],\n response_model_exclude_none=True\n )\nasync def get_users():\n response = paginate(users)\n response.status = \"success\" # default 'success'\n return response\n```\n\n\n\n\n\n# Exception Handling\n\n\n### Django\n\nsettings.py\n```python\nREST_FRAMEWORK = {\n # jsend2 exception handler\n \"EXCEPTION_HANDLER\": \"jsend2.django.exception.jsend_exception_handler\",\n \n}\n\n```\nurls.py (Project urls)\n```python\nfrom jsend2.django.exception import myhandler400, myhandler403, myhandler404, myhandler500\n\nhandler500 = myhandler500\nhandler404 = myhandler404\nhandler400 = myhandler400\nhandler403 = myhandler403\n```\n\n\n### FastAPI\nmain.py\n\n```python\nfrom fastapi import FastAPI, HTTPException\nfrom api import router\nfrom src.jsend2.jfast.exception import ExceptionMiddleware\n\napp = FastAPI()\n\napp.include_router(router)\n\nExceptionMiddleware(app)\n```\n", "bugtrack_url": null, "license": "", "summary": "", "version": "0.0.8", "project_urls": null, "split_keywords": [ "fastapi", "django", "jsend" ], "urls": [ { "comment_text": "", "digests": { "blake2b_256": "023bdd9142b248beb0c71f54effc7455e93556c14b6f8ecb59765cd7df30ceff", "md5": "fa457cd25394a853db389d5c2911a09b", "sha256": "438fb1c5d64fd552da431c5e2ba223e8e25370d9c36e3ef6e8bc4c114d27e04b" }, "downloads": -1, "filename": "jsend2-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fa457cd25394a853db389d5c2911a09b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.9", "size": 7051, "upload_time": "2024-03-03T05:35:29", "upload_time_iso_8601": "2024-03-03T05:35:29.120818Z", "url": "https://files.pythonhosted.org/packages/02/3b/dd9142b248beb0c71f54effc7455e93556c14b6f8ecb59765cd7df30ceff/jsend2-0.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "8f9c3f810de613a8f6abcdbb61e56712e5a240beafc4fa864508dc0e89f872bf", "md5": "a6ce3b2beeb711810a73b78d7c2fd46e", "sha256": "cd192b3120c8987ea9ceaf3f1026670873fdeadb349239d8e968d73d4f9fb5ea" }, "downloads": -1, "filename": "jsend2-0.0.8.tar.gz", "has_sig": false, "md5_digest": "a6ce3b2beeb711810a73b78d7c2fd46e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.9", "size": 6458, "upload_time": "2024-03-03T05:35:30", "upload_time_iso_8601": "2024-03-03T05:35:30.376997Z", "url": "https://files.pythonhosted.org/packages/8f/9c/3f810de613a8f6abcdbb61e56712e5a240beafc4fa864508dc0e89f872bf/jsend2-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "upload_time": "2024-03-03 05:35:30", "github": false, "gitlab": false, "bitbucket": false, "codeberg": false, "lcname": "jsend2" }