{"id":19652329,"url":"https://github.com/pingf/falsy","last_synced_at":"2025-04-28T17:30:33.885Z","repository":{"id":147605833,"uuid":"78077691","full_name":"pingf/falsy","owner":"pingf","description":"FAL.S.Y python api framework(the framework for using falcon, swagger, yaml together)","archived":false,"fork":false,"pushed_at":"2017-08-16T08:10:43.000Z","size":6603,"stargazers_count":110,"open_issues_count":5,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-05T09:51:10.807Z","etag":null,"topics":["api","python","swagger"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pingf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2017-01-05T03:57:36.000Z","updated_at":"2025-04-04T03:48:52.000Z","dependencies_parsed_at":"2023-06-18T21:52:50.608Z","dependency_job_id":null,"html_url":"https://github.com/pingf/falsy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingf%2Ffalsy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingf%2Ffalsy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingf%2Ffalsy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pingf%2Ffalsy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pingf","download_url":"https://codeload.github.com/pingf/falsy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251355208,"owners_count":21576313,"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":["api","python","swagger"],"created_at":"2024-11-11T15:10:19.183Z","updated_at":"2025-04-28T17:30:33.880Z","avatar_url":"https://github.com/pingf.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# falsy\n\nFAL.S.Y\n\n### description\n\n    it's an api framework.\n    using falcon, swagger, yaml together!\n  \n### license\n\n    MIT and Apache v2\n  \n### showtime\n\n![ScreenShot](https://raw.githubusercontent.com/pingf/falsy/master/demo.gif)\n\n\n### how to install it\n\n`pip install falsy`\n  \n### how to use it\n\n0. create the dir for static\n\n    `mkdir static`\n\n1. writting the server code(main.py)\n\n    ```python\n    from falsy.falsy import FALSY\n\n    f = FALSY()   #you need create the dir called static before you run\n    f.swagger('test.yml', ui=True, theme='impress') #impress theme is the responsive swagger ui, or you can use 'normal' here\n    api = f.api\n    ```\n\n2. writting the yml file\n\n    ```\n    swagger: '2.0'\n    info:\n    title: FALSY SIMPLE DEMO API\n    version: \"0.1\"\n    consumes:\n    - application/json\n    produces:\n    - application/json\n    basePath: \"/v1\"\n    paths:\n      '/hello':\n        get:\n          tags: [Method]\n          operationId: demo.get_it\n          summary: testing\n          parameters:\n            - name: name\n              in: query\n              type: string\n              default: 'john'\n          responses:\n            200:\n              description: Return response\n    ```\n  \n3. writting the operation handler(demo.py)\n\n    ```python\n    def get_it(name):\n        return {\n            'get': name\n        }\n    ```\n  \n4. run it\n\n    `gunicorn -b 0.0.0.0:8001 main:api --reload -w 1 --threads 1`\n  \n5. visit the ui page\n\n    `http://0.0.0.0:8001/v1/ui/`\n    make sure it ends with '/'\n  \n### video demo\n\n![ScreenShot](https://raw.githubusercontent.com/pingf/falsy/master/falsy.gif)\n  \n### extensions\n    \n    there some improvements compare to standard swagger, \n    you can define `operationId` for handler, 'beforeId' and 'afterId' for aop hooks,\n    and 'validationId' for validator, see the files in demo dir for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpingf%2Ffalsy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpingf%2Ffalsy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpingf%2Ffalsy/lists"}