[Python] FastapI를 사용하여 Todo 애플리케이션 구축😃
제목에서 말한 바와 같이FastapI로 업무 목록을 만들려고 합니다.
처음에FastapI의 자동 문서라고 들었어요. 생성 기능이 매우 좋아서 나는 이것에 대해 매우 흥미를 느낀다.
[백엔드]
https://github.com/momonoki1990/fastapi-todo-list-api
[프런트엔드]
https://github.com/momonoki1990/fastapi-todo-list-frontend
나는 정말 그것을 필요로 하지 않는다. 왜냐하면 나는 단지Fast API를 시험해 보고 싶을 뿐이지만, 나도 그것을 위해 앞부분을 만들었다.
나는 앞부분을 가지고 있는 것도 더욱 흥분된다고 생각한다.
※ (2022/01/06) 나는 백엔드에 사용자 등록과 로그인 기능을 추가하였으나, 백엔드에 이러한 새로운 기능을 따르지 않았기 때문에 백엔드는 현재 거의 일을 할 수 없습니다😢
자동 대화식 API 문서
서버를 시작하고
/docs
로 이동하면 API 설명서에 액세스할 수 있습니다.각 자원에 대한 요청과 응답 형식 목록을 볼 수 있으며, '시험' 단추를 누르면 실제 요청을 수행할 수 있습니다.
이 문서 자체의 생성은 API 루트를 포맷하여 간단하게 설명하는 방식으로 이루어집니다.
@router.get("", response_model=List[task_schema.TaskResponse])
async def list_tasks(db: AsyncSession = Depends(get_db)):
return await task_crud.get_tasks(db)
예를 들어 상기 코드에서 응답 주체의 유형은 설정response_model=List[task_schema.TaskResponse]
을 통해 설정된다.from pydantic import BaseModel, Field
class TaskResponse(TaskBase):
id: int = Field(..., gt=0, example=1)
done: bool = Field(False, description="done task or not")
class Config:
orm_mode = True
task_schema.TaskResponse
는 Pydantic의 BaseModel을 계승하고 구성원 변수에python 형식 알림을 설정하는 클래스입니다.필드에 대한 실례에 검증과 파라미터 설명을 추가할 수 있습니다. 이것은 문서에 반영됩니다.
설정
orm_mode = True
하면 ORM(이 예는 SQLAlchemy) 모델 대상이 Pydantic 응답 대상으로 변환됩니다.설정하지 않으면 검증 오류가 발생합니다.
이것은 내가 처음으로 파이톤으로 API를 만들었지만, 나는 놀랍게도 API를 작성하는 것이 얼마나 직관적이고, 값을 키워드 매개 변수로 전달함으로써 얼마나 상세한 검증을 설정할 수 있으며, 문서가 어떻게 자동으로 생성되는지 발견했다.
연금술
이번에 나는 SQLAlchemy를 ORM으로 사용하려고 시도했지만, 처음에는 공식 문서에서 무엇을 읽는지 몰랐다...
우선, SQLAlchemy ORM과 SQLAlchemy Core 두 종류가 있는데, 후자는 SQL을 직접 씁니까?
이 강좌에서 ORM과 Core는 혼합하여 쓴 것으로 처음에 나는 어느 것이 어느 것인지 몰랐다.이 밖에 ORM에서 조회를 작성하는 방식은 2.0 스타일과 1이 있는 것 같다.x 스타일, 나는 어느 것이 어느 것인지 모른다.
그러나 ORM과 코어, 1.4와 2.0 스타일이 있다는 것을 깨달았고 1.4에 설정
future=True
을 해서 2.0 스타일의 조회를 작성할 수 있다는 것을 알았을 때 문서에서 어디를 찾을 수 있는지 알았다.engine
는 DB에 전달되는 설정이고 session
는 저장engine
설정이라는 것도 알게 되었다.비동기 프로세스의 드라이버에 대해 AimySql이 업데이트를 중지한 것 같습니다. asyncmy를 사용하는 것을 권장합니다.
top page for each version의 밑에 사투리 문서가 있고 각 데이터베이스의 설정과 드라이버를 설명합니다.)
테스트 환경으로 Poetry, Black, tox, DB 컨테이너
패키지 관리자 Poery와 Black이라는 포맷 프로그램을 사용했습니다.
테스트 관리 도구 tox의 기본 패키지 관리자는 표준python pip이기 때문에 POMERY를 사용하여 모든 테스트 환경에 의존 라이브러리를 설치하도록 설정합니다. 아래와 같습니다.
[tox]
skipsdist = true
envlist = flake8, py310
install_command = poetry install -D {packages}
[testenv]
deps = pytest
allowlist_externals = poetry
commands =
poetry install
poetry run pytest tests/
[testenv:flake8]
deps = flake8
commands =
poetry run flake8 src/
나는 검은색을 좋아한다. 왜냐하면 그것은 설치할 필요가 없기 때문이다.(최대 선 길이: 88은 너무 짧은가요?)
위의 Python 개발 도구와는 무관하지만, 테스트 환경 DB에서 Docker 용기를 사용합니다.
개발용 DB 컨테이너와 거의 동일하지만 볼륨에서 지속되지는 않습니다.
db-test:
image: mysql:8.0
environment:
MYSQL_DATABASE: "todo"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
TZ: "Asia/Tokyo"
volumes:
- ./my.conf:/etc/mysql/conf.d/my.cnf
ports:
- 33050:3306
그나저나 프런트엔드 정보(Vite, Chakra UI)
나는 Vite 이라는 설치 도구를 사용했다. 왜냐하면 이것이Create React 프로그램보다 더 빠르고 더 좋다고 들었기 때문이다.템플릿을 만들기 전에 속도가 더 빠르다고 생각합니다.
Tailwind처럼 CSS를 작성할 수 있다고 들었는데 궁금해서 해봤어요.
아래
install_command
와gridGap
(윗부분과 밑부분 채우기)처럼 모든 CSS를React 도구로 작성할 수 있을 것 같습니다. 저는 개인적으로 그것을 좋아합니다. 직관적으로 보이기 때문에Tailwind CSS와 같은 클래스는 걱정할 필요가 없습니다.나는 또한
py
VStack
가 수평과 수직 flex 용기를 만드는 데 매우 유용하다는 것을 발견했다.<div className="App">
<Container>
<VStack gridGap="8" py="16">
<Heading as="h1" size="4xl">
My Todo List
</Heading>
<InputForm tasks={tasks} setTasks={setTasks} />
<List tasks={tasks} setTasks={setTasks} />
</VStack>
</Container>
</div>
Reference
이 문제에 관하여([Python] FastapI를 사용하여 Todo 애플리케이션 구축😃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/momonoki1990/pythonbuilt-todo-app-with-fastapi-15a7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)