들어가며
- 여러개의 REST API 가 존재하는 경우 대표 API 로 호출하는 방법에 대해 알 수 있습니다.
내용
생성된 REST APP에서 두 개 이상의 Server 가 생성되는 경우가 많습니다.
이 때, External 을 등록하여 대표로 지정될 rest api server 를 설정할 수 있습니다.
external 로 지정된 server 가 있어도 다른 server 의 호출은 동일합니다.
Server 의 api 를 호출하면 notebook api 를 사용하여 값을 반환합니다. 이 때, 학습된 데이터는 model service 를 통해 가져옵니다.
❗️호출되는 api 는 Notebook 에서 지정한 api 를 통해 호출되는게 무슨 의미인가요?
server api 는 기본적으로 restapp 정보를 기반으로 endpoint 를 생성합니다. 그리고 호출되는 api 는 restapp > notebook 에서 지정할 수 있습니다.
예시 )
RESTAPP > notebook > controller.py
이해를 돕기위해 일부만 첨부하였습니다. 실제 코드 작성은 sodaflow 에서 제공하는 양식에 맞춰 진행합니다.
import traceback from flask import Blueprint, request, jsonify from app.mod_service import services from app.common.utils import as_json, create_logger, required_params logger = create_logger(__name__) # Define the blueprint: 'train', set its url prefix: app.url/test mod_service = Blueprint('service', __name__, url_prefix='/api') @mod_service.route('/test/predict/', methods=['GET', 'POST']) @as_json def test_predict(): logger.info("test model service prediction") try: param = request.get_json(silent=True) return services.predict(param) except Exception: result = dict() result['success'] = False result['log'] = traceback.format_exc() logger.error(result['log']) return result
따라서 api 호출 시 " Endpoint + api 값 " 을 통해 값을 호출할 수 있습니다.
API => https://sprk.sodaflow.co.kr:8443/test-restapp-server-1/api/test/predict
호출 결과
이 때, 고정된 API 로 지정한 restserver 를 통해 효율적인 업무를 진행할 수 있습니다.
External 설정 및 사용 방법
생성된 Server 중에서 External 을 활성화 시킵니다.
대표로 지정된 API 는 다음과 같이 호출됩니다.
API => https://sprk.sodaflow.co.kr:8443/test-restapp/api/test/predict
server 의 version 을 지정하지 않고 호출하여 고정된 값을 가질 수 있습니다.
단, notebook 에 생성된 api 를 고정으로 지정해야합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.