플라스크 정지 API: 플라스크 기반
이 문장의 작업 원리
dbanty 회사 / python rest
기본 플라스크 REST API의 예 항목 표시
안녕하세요.내가 이 환매 협의를 만든 것은 플라스크를 추적하기 위해서였지만, 나는 아직 완성하지 않았고, 영원히 완성하지 못할 것이다.실제로 Python RESTAPI를 만드는 진정한 아름다움을 얻기 위해 당신도 이렇게 하는 것을 건의합니다.
View on GitHub
이 댓글에.
이 글은 공장 모드를 이용하여 매우 간단한 플라스크 프로그램을 만드는 방법을 소개했다.그리고pytest의 테스트 구동 개발을 통해 청사진에 간단한 건강검진 컨트롤러를 만듭니다.본고의 마지막 부분에서 당신은 매우 간단한 웹 서버를 가지고 있습니다. 이것은 완전한 테스트 커버율을 가지고 있습니다!
주제:
플라스크 공장 모드
전체 Flask는
Flask
응용 프로그램 대상을 중심으로 Flask를 사용하기 시작하는 첫 번째 일은 프로젝트의 어느 곳에서 이 대상 중 하나를 만드는 것입니다.당신은 강좌에서 두 가지 흔히 볼 수 있는 방법을 보게 될 것입니다.응용 프로그램의 실례를 되돌려주는 공장 방법을 설명합니다.이 방법은 더 많은 입력이 필요하지만 좋은 점이 많다.
__init__.py
에서 창설 방법 자체.# python_rest/__init__.py
from flask import Flask
def create_app():
return Flask(__name__)
이것이 바로 응용 프로그램을 설명하는 데 사용되는 모든 코드입니다!이제 Flask 개발 서버에서만 실행할 수 있습니다.명령줄에서 실행
우리는 명령줄에서 시가가 있는 프로그램을 쉽게 실행할 수 있지만, 우선 Flask가 무엇을 실행해야 하는지 알려야 한다.다행히도 환경 파일에 대한 지원이 내장되어 있어 다양한 내용을 설명할 수 있습니다.우선
python-dotenv
을 개발 의존항으로 추가한다.$ poetry add -D python-dotenv
현재 ".flaskenv"라는 프로젝트 루트 디렉터리에 환경 변수 "FLASK\u APP"를 모듈의 이름으로 설정하는 파일을 만듭니다.Note: The Flask recommendation is to check the ".flaskenv" file into the project with any non-sensitive, default values. You can then override them with the more standard ".env" file which should never be checked into source control.
# .flaskenv
FLASK_APP=python_rest
이제 개발 서버를 실행할 수 있습니다.네가 시 아래에서 그것을 운행할 것을 확보해라!$ poetry run flask run
Py Charm 입고 달리기.
문서 문자열
Python 함수를 작성했으니 이 함수를 위해 docstring을 작성해야 합니다.코드 문서를 작성하는 이유는 무궁무진하다. 나는 모든 함수에docstring을 하나 주는 것이 가장 좋다는 것을 발견했다. 그 중에는 적어도 몇 개의 단어의 요약이 포함되어 있다.docstring은 앞으로 당신의 API를 위해 좋은 문서를 만드는 데 매우 중요하기 때문에 즉시 습관을 들이는 것이 가장 좋습니다.
DocString에는 많은 형식이 있으며 대부분 PyCharm에서 지원되며 PyCharm에서 사용할 수 있습니다.This page 서로 다른 형식을 잘 개술하였다.StructuredText 문자열을 사용합니다. 다른 종류의 프로젝트에서 사용하는 Sphinx 본기에서 지원하기 때문입니다.그것들은 이렇게 보인다.
def create_app():
"""
Creates an application instance to run
:return: A Flask object
"""
return Flask(__name__)
유형 주석
나는 내가 유형 주석이 얼마나 중요하다고 생각하는지 강조할 수 없다.파이썬의 동적 입력 시스템은 매우 좋아서 코드를 매우 빨리 작성할 수 있다.그러나 프로젝트가 더욱 복잡해지면서 간단한 실수를 하기 쉽습니다.나는 hint의 모든 것을 입력했다. 이렇게 하면PyCharm은 내가 어리석은 일을 할 때 나에게 (예를 들어 어딘가의 귀환을 잊어버리고) 정적 분석 도구(예를 들어 mypy)로 흔히 볼 수 있는 버그를 포착할 수 있다.
create_app
함수의 유형 설명은 다음과 같습니다.def create_app() -> Flask:
테스트 구동 개발
테스트 드라이브 개발(TDD)은 매우 간단하다. 바로 코드를 작성하기 전에 코드를 작성하는 테스트를 하는 것이다.많은 책들이 왜 이것이 좋은 생각인지 쓰고 있지만, 간단하다. 이것이 바로 내가 왜 이렇게 하는 이유이다.
Pytest 회사
테스트를 작성하기 위해서는 어떤 프레임워크를 사용해야 합니다.Python 표준 라이브러리에는'Unittest'라는 라이브러리가 포함되어 있지만, 나는 pytest를 더 좋아한다.그것을 사용하는 데는 여러 가지 이유가 있지만 가장 기본적인 것은 다음과 같다.
$ poetry add -D pytest pytest-flask
현재 PyCharm을 사용하고 있다면,pytest를 사용하도록 설정해야 합니다Note: you can change Docstring format here too
다음에,tests 디렉터리에pytest의 프로필 (conftest.py) 을 만듭니다.이 파일은 항상 테스트 실행 전에 가져옵니다. 사용할 기기를 정의하고 다른 테스트 전 설정을 실행합니다.pytestflask를 사용하려면'app'fixture를 정의해야 합니다. 이것은
Flask
대상의 실례를 되돌려줍니다.# tests/conftest.py
import pytest
from flask import Flask
@pytest.fixture
def app() -> Flask:
""" Provides an instance of our Flask app """
from python_rest import create_app
return create_app()
청사진
이제 우리가 방문할 수 있는 단점을 만들 때가 되었다.매우 흔히 볼 수 있는 방법은 프로그램이 실행 중인지 확인하기 위해 어떤 건강 검사 단점을 사용하는 것이다.이 단점을 만들기 위해서는 컨트롤러 (요청을 처리하는 함수) 를 만들어야 합니다. 이 컨트롤러는 청사진 (경로 아래의 컨트롤러 집합) 에 등록되고, 청사진은 응용 프로그램 대상에 등록됩니다.
우선, 새 코드를 어디에 두었는지 찾아내자.나는 주 모듈 아래의 청사진이라는 모듈에서 내가 만든 모든 청사진을 보존하는 것을 좋아한다.이 청사진은 루트 경로 ("/") 를 관리하는 데 사용될 것이기 때문에 "blueprints"모듈의 다음 "root.py"파일에 놓을 것입니다.
다음으로, "tests/test\u blueprints/test\u root.py"를 만들어서 tests 디렉터리에서 이 디렉터리 구조를 거울로 만들어야 합니다.적당한
__init__.py
파일과 함께 전체 프로젝트 구조는 다음과 같아야 한다.python-rest
|-- README.md
|-- poetry.lock
|-- pyproject.toml
|-- python_rest
| |-- __init__.py
| `-- blueprints
| |-- __init__.py
| `-- root.py
`-- tests
|-- conftest.py
`-- test_blueprints
|-- __init__.py
`-- test_root.py
곧 생성될 단점을 위한 테스트를 작성합시다.우리는pytestflask가 제공하는 클라이언트 클러치를 사용하여 현지에서 요청을 실행할 수 있습니다.상태 확인이 200(OK) 상태와 일부 JSON 본문으로 되돌아오기를 원합니다.다음은 테스트입니다.# tests/test_blueprints/test_root.py
from http import HTTPStatus
def test_health(client):
response = client.get('/health/')
assert response.status_code == HTTPStatus.OK, 'Health check failed'
assert response.json == {'message': 'Healthy'}, 'Improper response'
이 단언 문장들은 실행할 때 테스트를 통과하거나 실패하는 요소입니다.단언 후 쉼표 뒤에 있는 문자열은 검사에 실패했을 때 표시될 메시지입니다.PyCharm에서 함수 정의 옆에 있는 녹색 작은 화살표를 클릭하거나 명령줄에서 실행poetry run pytest
하여 테스트를 실행합니다.어쨌든 너는 그것이 실패하는 것을 보아야 한다.이제 루트 청사진과 실제 단점을 만듭니다.
# python_rest/blueprints/root.py
from flask import Blueprint
# Declare the blueprint with whatever name you want to give it
root_blueprint = Blueprint('root', __name__)
# This is how you register a controller, it accepts OPTIONS and GET methods by default
@root_blueprint.route('/health/')
def health():
return {'message': 'Healthy'} # This will return as JSON by default with a 200 status code
현재, 우리는 이 청사진을 응용 프로그램에 등록해야만 진정으로 컨트롤러에 도달할 수 있다.그들의 방법은 프로그램이 만들어질 때 함수를 호출하여 청사진을 프로그램에 등록하는 것이다.이 함수를'init\u app'이라고 명명하는 것이 관례입니다. 저는'init\u app'함수가 있으면 모든 청사진을 동시에 등록할 수 있기를 바랍니다.논리에 맞는 일은 이 함수를 블루프린트 모듈__init__.py
에 넣는 것이다.# python_rest/blueprints/__init__.py
from flask import Flask
def init_app(app: Flask):
from .root import root_blueprint
app.register_blueprint(root_blueprint)
현재,create_appfactory 함수에서 이 함수를 호출하기만 하면 됩니다.# python_rest/__init__.py
from flask import Flask
def create_app() -> Flask:
"""
Creates an application instance to run
:return: A Flask object
"""
app = Flask(__name__)
from . import blueprints
blueprints.init_app(app)
return app
그렇습니다!만약 테스트를 다시 실행한다면, 그것은 지금 통과해야 합니다!flask 응용 프로그램을 실행하고 브라우저에서 localhost:5000/health/
으로 이동하여 JSON 응답을 볼 수도 있습니다.
Reference
이 문제에 관하여(플라스크 정지 API: 플라스크 기반), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dbanty/python-rest-api-flask-basics-3ffn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)