서론FastAPI를 사용하다보면 Pydantic을 이용해 커스텀 class를 정의해야 할 일이 생긴다.아래는 Pydantic의 BaseModel class를 상속한 CorrectionRequest class를 정의하는 모습이다.실제 맞춤법 검사기에서 사용하는 클래스이다.class CorrectionRequest(BaseModel): text: str correction: str memo: str recaptcha_response: str그러면 Pydantic은 무엇이고 왜 사용하는 걸까? 본론Pydantic의 공식 Docs의 서문을 인용하겠다.Pydantic is the most widely used data validation library for Python.Pydantic은 데..
서론DjangoRestFramework(이하 DRF)로 사이트를 구현하다 보면 해시태그와 같이 SlugRelatedField에서 get_or_create 연산을 해야 하는 경우가 생긴다.하지만 DRF의 SlugRelatedField에서는 이걸 지원하지 않는다.우리에게는 class 상속이 있다! 상속을 통해 이 문제를 해결해보자. 본론내가 작성한 코드는 이렇게 된다.class QuestionSerializer(serializers.ModelSerializer): owner = serializers.StringRelatedField(source='owner.profile.nickname', read_only=True) answer = AnswerSerializer(many=True, source=..
서론이전의 Nuxt3 google ReCaptcha 사용하기 글의 연장이다.맞춤법 검사기 를 구성하며 Nuxtjs 3와 FastAPI로 웹개발을 한 기록이다.이번 이야기는 Nuxt3에서 받아온 ReCaptcha Token을 FastAPI에서 검증하는 방법에 대한 이야기다. 같은 방법으로 Django나 Node.js 등 다양한 언어에서 적용이 가능하니 참고하기 바란다. 본론ChatGPT의 도움을 조금 받았다. (아니 사실 엄청 많이 받았다.)간단히 HTTP Request를 양식에 맞춰 보내는 것만으로도 ReCaptcha 토큰의 검증은 끝난다.아래는 FastAPI에서 실행시키기 위한 간단한 코드다.from fastapi import HTTPExceptionimport httpxasync def recapt..
서론맞춤법검사기를 제작하면서 Huggingface Transformer API(이하 Transfomer API)를 FastAPI 백엔드에서 사용할 일이 생겼다.처음에는 당연하게도 이런식으로 구성했다.@router.post("/correction", response_model=CorrectionResponse)@limiter.limit("60/seconds")async def correction(request: Request, correction: CorrectionRequest, user: Session = Depends(get_logged_user)): # 1. Tokenize and pad inputs in batches batch = [tokenizer([f"{tokenizer.bos_t..