Skip to content

Commit

Permalink
Section 7.5 - API Versioning
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristopherGS committed Mar 29, 2020
1 parent b02a156 commit 0d47e30
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/ml_api/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.2.0
4 changes: 4 additions & 0 deletions packages/ml_api/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from api.config import PACKAGE_ROOT

with open(PACKAGE_ROOT / 'VERSION') as version_file:
__version__ = version_file.read().strip()
9 changes: 9 additions & 0 deletions packages/ml_api/api/controller.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from flask import Blueprint, request, jsonify
from regression_model.predict import make_prediction
from regression_model import __version__ as _version

from api.config import get_logger
from api import __version__ as api_version

_logger = get_logger(logger_name=__name__)

Expand All @@ -16,6 +18,13 @@ def health():
return 'ok'


@prediction_app.route('/version', methods=['GET'])
def version():
if request.method == 'GET':
return jsonify({'model_version': _version,
'api_version': api_version})


@prediction_app.route('/v1/predict/regression', methods=['POST'])
def predict():
if request.method == 'POST':
Expand Down
13 changes: 13 additions & 0 deletions packages/ml_api/tests/test_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import json
import math

from api import __version__ as api_version


def test_health_endpoint_returns_200(flask_test_client):
# When
Expand All @@ -14,6 +16,17 @@ def test_health_endpoint_returns_200(flask_test_client):
assert response.status_code == 200


def test_version_endpoint_returns_version(flask_test_client):
# When
response = flask_test_client.get('/version')

# Then
assert response.status_code == 200
response_json = json.loads(response.data)
assert response_json['model_version'] == _version
assert response_json['api_version'] == api_version


def test_prediction_endpoint_returns_prediction(flask_test_client):
# Given
# Load the test data from the regression_model package
Expand Down

0 comments on commit 0d47e30

Please sign in to comment.