https://github.com/code-and-sorts/cookie-py-az-func-api
Example Python Azure Function App project using the Cookiecutter API template.
https://github.com/code-and-sorts/cookie-py-az-func-api
azure-functions cookiecutter example python
Last synced: 10 months ago
JSON representation
Example Python Azure Function App project using the Cookiecutter API template.
- Host: GitHub
- URL: https://github.com/code-and-sorts/cookie-py-az-func-api
- Owner: Code-and-Sorts
- License: mit
- Created: 2024-08-23T00:21:56.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-23T01:00:40.000Z (over 1 year ago)
- Last Synced: 2025-02-13T12:42:55.514Z (12 months ago)
- Topics: azure-functions, cookiecutter, example, python
- Language: Python
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kitten-Claws API
> [!IMPORTANT]
> This example Python Azure Function API was generated using the [Cookiecutter API](https://github.com/Code-and-Sorts/cookiecutter-api) template.
## Overview
This project is a Python-based REST API built using [Azure Function Apps](https://learn.microsoft.com/en-us/azure/azure-functions/). The API leverages Azure's serverless architecture, allowing you to deploy and scale functions effortlessly in the cloud. The HTTP-triggered functions serve as the endpoints for the API, providing a seamless way to handle client requests.
The REST API has the following endpoints:
- GET (by ID)
- GET (list)
- POST
- PATCH
- DELETE (soft-delete)
Dependency management is handled using [Poetry](https://python-poetry.org/), ensuring a streamlined and consistent environment for managing Python packages and their dependencies.
## Features
- Azure Function Apps: Utilizes Azure's serverless platform to create scalable and efficient endpoints with HTTP triggers.
- Python-Based: Written entirely in Python, leveraging its rich ecosystem and libraries for rapid development.
- Poetry for Dependency Management: Manages all Python dependencies with Poetry, making the development environment consistent and easy to set up.
- Cosmos DB NoSQL Account: This project uses Cosmos DB NoSQL database.
## Prerequisites
- Python >=3.7, <=3.11
- [Azure Functions Core Tools](https://github.com/Azure/azure-functions-core-tools): To run the Function Apps locally.
- [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/): To deploy and manage Azure Function Apps.
- [Poetry](https://python-poetry.org/): For dependency management and virtual environment setup.
- Azure Account: An active Azure subscription for deploying the Function App.
- Cosmos DB NoSQL Account either deployed in Azure or [emulated](https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-develop-emulator?tabs=docker-linux%2Ccsharp&pivots=api-nosql).
## Setup and Installation
1. Install Azure Functions Core Tools
Follow the [documentation](https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=windows%2Cisolated-process%2Cnode-v4%2Cpython-v2%2Chttp-trigger%2Ccontainer-apps&pivots=programming-language-python#install-the-azure-functions-core-tools) to install Azure Function Core Tools based on your operating system.
2. Install Poetry
If you haven't already installed Poetry, you can do so by following the [official installation guide](https://python-poetry.org/docs/).
3. Install Dependencies
Install all dependencies and set up the virtual environment:
```console
make install
```
To be able to run the project locally, set the environment variable values in the local.settings.json project file.
4. Run the API Locally
```console
make run
```
This command starts the local development server using the Azure Function Core Tools, where you can interact with your API endpoints.
5. Thunderclient
Included in the project is a [Thunderclient](https://www.thunderclient.com/) collection in the .thunderclient directory to easily test the locally hosted APIs.
## Development Workflow
### Adding a New Dependency
```bash
poetry add
```
### Removing a Dependency
```bash
poetry remove
```
## Running Tests
Ensure your code is working as expected by running unit tests using pytest:
```bash
make test
```
## Repository structure
```text
├── cookiecutter-template-python
│ ├── .thunderclient - Thunderclient collection
│ ├── blueprints - Function App methods
│ ├── controllers - Controllers
│ ├── errors - Custom errors
│ ├── models - Pydantic models
│ ├── repositories - Cosmos DB repository
│ ├── services - Services
│ └── utils - Error detect & response generator utilities
│
└── function_app.py - Function App entry method
```
## License
This project is licensed under the MIT License. See the LICENSE file for details.
---
Repository generated with [Code-and-Sorts/cookiecutter-api](https://github.com/Code-and-Sorts/cookiecutter-api).