{"id":15433794,"url":"https://github.com/yusukeiwaki/nano_router","last_synced_at":"2025-03-22T02:42:14.806Z","repository":{"id":93280104,"uuid":"135424272","full_name":"YusukeIwaki/nano_router","owner":"YusukeIwaki","description":null,"archived":false,"fork":false,"pushed_at":"2018-06-01T01:47:34.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-18T08:31:43.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YusukeIwaki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-30T10:02:50.000Z","updated_at":"2018-06-01T01:48:12.000Z","dependencies_parsed_at":"2023-03-15T16:00:35.565Z","dependency_job_id":null,"html_url":"https://github.com/YusukeIwaki/nano_router","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"3e4e5d32fe0526de7fdf0625ba69ae0ca43a146c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YusukeIwaki%2Fnano_router","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YusukeIwaki%2Fnano_router/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YusukeIwaki%2Fnano_router/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YusukeIwaki%2Fnano_router/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YusukeIwaki","download_url":"https://codeload.github.com/YusukeIwaki/nano_router/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244898408,"owners_count":20528335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T18:35:28.552Z","updated_at":"2025-03-22T02:42:14.784Z","avatar_url":"https://github.com/YusukeIwaki.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nano Router: A very tiny router library.\n\n## Say \"Good-bye!\" to boring if-clauses!\n\n```py\ndef handle_request(obj):\n  if obj[\"method\"] == \"GET\":\n    return handle_get(obj)\n  elif obj[\"method\"] == \"POST\":\n    return handle_post(obj)\n  else:\n    return handle_unknown(obj)\n\ndef handle_get(obj):\n  if obj[\"path\"] == \"/\":\n    return \"OK\"\n  elif obj[\"path\"] == \"/ping\":\n    return \"pong\"\n  else:\n    return \"404\"\n\n :\n :\n :\n :\n\n```\n\n## Do it smart and simple way!\n\n### main_router.py\n\n```py\nfrom nano_router import RegexRouter\nfrom sub_router import router as sub\n\nrouter = RegexRouter()\n\n@router.Route(\"^GET /.*\")\ndef handle_get(obj):\n  return sub.handle(obj[\"path\"], obj)\n\n@router.Route(\"POST /.*\")\ndef handle_post(obj):\n  return \"OK\"\n\n@router.DefaultRoute\ndef handle_known_request(obj):\n  return \"500\"\n```\n\n### sub_router.py\n\n```py\nfrom nano_router import RegexRouter\n\nrouter = RegexRouter()\n\n@router.Route(\"/\")\ndef get_index(obj):\n  return \"index\"\n\n@router.Route(\"/ping\")\ndef get_ping(obj):\n  return \"pong\"\n\n@router.DefaultRoute\ndef get_default(obj):\n  return \"404\"\n```\n\n### main.py\n\n```py\nfrom main_router import router\n\ndef handle(obj):\n  print router.handle(\"%s %s\"%(obj[\"method\"], obj[\"path\"]), obj)\n\nhandle({ \"method\": \"GET\", \"path\": \"/\" })\n# =\u003e index\n\nhandle({ \"method\": \"GET\", \"path\": \"/ping\" })\n# =\u003e pong\n\nhandle({ \"method\": \"GET\", \"path\": \"/favicon.ico\" })\n# =\u003e 404\n\nhandle({\n  \"method\": \"POST\", \"path\": \"/users\",\n  \"body\": {\n    \"user\": { \"name\": \"YusukeIwaki\" }\n  }\n})\n# =\u003e OK\n\nhandle({ \"method\": \"DELETE\", \"path\": \"/users/1\" })\n# =\u003e 500\n```\n\n## Install\n\n### via 'pip install'\n\n```\npip install git+https://github.com/YusukeIwaki/nano_router\n```\n\n### or \"Copy \u0026 Paste\" simply 😁\n\n* https://github.com/YusukeIwaki/nano_router/blob/master/nano_router/router.py\n* https://github.com/YusukeIwaki/nano_router/blob/master/nano_router/regex_router.py","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukeiwaki%2Fnano_router","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusukeiwaki%2Fnano_router","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukeiwaki%2Fnano_router/lists"}