124 lines
2.3 KiB
Markdown
124 lines
2.3 KiB
Markdown
# Posts API
|
|
|
|
This is the Posts API project, a simple API for managing blog posts.
|
|
|
|
|
|
## Table of Contents
|
|
- [Installation](#installation)
|
|
- [Usage](#usage)
|
|
- [Endpoints](#endpoints)
|
|
- [Contributing](#contributing)
|
|
- [License](#license)
|
|
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://git.fairfaxmedia.net/posts-api/papi-py.git
|
|
```
|
|
2. Navigate to the project directory:
|
|
```bash
|
|
cd papi-py
|
|
```
|
|
3. Install the dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
To start the server, run:
|
|
```bash
|
|
python3 papi.py
|
|
```
|
|
|
|
|
|
To start with an alternative database location(postgresql)
|
|
Use the following
|
|
```bash
|
|
DATABASE_URL='postgresql+psycopg2://user:password@hostname/database_name' python3 papi.py
|
|
```
|
|
## Endpoints
|
|
|
|
### GET /posts
|
|
Retrieve a list of all posts.
|
|
|
|
### POST /posts
|
|
Create a new post.
|
|
|
|
### GET /posts/{id}
|
|
Retrieve a specific post by ID.
|
|
|
|
### PUT /posts/{id}
|
|
Update a specific post by ID.
|
|
|
|
### DELETE /posts/{id}
|
|
Delete a specific post by ID.
|
|
|
|
|
|
|
|
### Unit Tests
|
|
```bash
|
|
make coverage
|
|
```
|
|
|
|
This runs coverage tests and stores the html coverage report along with functions tested in htmlcov
|
|
|
|
|
|
## deploy...
|
|
Please log into the connected container registry on Makefile:4 WHERE it says REGISTRY=
|
|
using the `docker login` command
|
|
|
|
feel free to edit the VER= tag
|
|
ensure you are logged into kubernetes so that commands kubectl and helm both work
|
|
|
|
then run
|
|
```bash
|
|
make deploy
|
|
```
|
|
|
|
|
|
|
|
### Integration testing instructions
|
|
to test live on papi.kube-dev.fairfaxmedia.net
|
|
run the following:
|
|
```bash
|
|
make integration -e LIVE_HOST=http://papi.kube-dev.fairfaxmedia.net
|
|
```
|
|
|
|
to integration-test on localhost on the default port run
|
|
```bash
|
|
make integration
|
|
```
|
|
|
|
|
|
## openapi spec:
|
|
|
|
[openapi.json](https://papi.kube-dev.fairfaxmedia.net/openapi.json)
|
|
|
|
[swagger-ui](https://papi.kube-dev.fairfaxmedia.net/docs)
|
|
|
|
|
|
### helm deployment
|
|
```bash
|
|
helm upgrade papi ./papi-helm/ -f ./papi-helm/v.${ENV}.yaml --set image.tag=${TAG} --set env.VERSION=${VER}
|
|
```
|
|
or alternatively
|
|
```bash
|
|
make deploy
|
|
```
|
|
|
|
### postman-like hopscotch collection:
|
|
|
|
|
|
|
|
hopscotch_collection.json can be imported into the following tool
|
|
[hopscotch-ui](https://hopscotch.kube.fairfaxmedia.net/)
|
|
|
|
## kubernetes dashboard plane:
|
|
[kubernetes](https://kube.fairfaxmedia.net)
|
|
|
|
[git-ci server](https://git.fairfaxmedia.net) |