2025년 April 29일
  1. 개발 히스토리
  2. [Backend] 기본 키 제공

[Backend] 기본 키 제공

기본 API 키 생성

현재 테스트를 위해 계정을 만들고 사용해도,
가지고 있는 API키가 없어서 테스트가 불가능해지는 경우가 많습니다.

그래서 사용자가 처음 가입을 하면,
체험용 API 키를 하나 제공하는 기능을 추가했습니다.

회원가입 CRUD 수정

def user_register(db : Session, email : str, pw : str, name : str, phone_number : str):
    hashed_pw = hash_password(pw)
    new_user = User(
        email = email,
        password=hashed_pw,
        name = name,
        role = 'user',
        group = 'newUser',
        register_at=datetime.utcnow(),
        phone_number = phone_number
    )
    db.add(new_user)
    db.commit()
    db.refresh(new_user)
    return new_user.id

회원가입이 완료된 후,
db.refresh()로 데이터베이스 내의 User 컬럼을 업데이트합니다.
업데이트 직후 생성된 사용자의 ID를 그대로 반환합니다.

기본 API 키 추가

def add_default_apikey(db : Session, user_id : int):
    new_apikey = ApiKey(
        api_key='Default API Key',
        provider_id=2,
        provider_name = 'Anthropic',
        usage_limit = 500,
        usage_count = 0,
        user_id = user_id,
        status = "Active"
    )
    db.add(new_apikey)
    db.commit()
    db.refresh(new_apikey)
    return "success"

기본 API 키를 생성해주는 함수입니다.
기본 제공 키는 ‘Default API Key’라는 이름으로 표기됩니다.

엔드 포인트

@user_router.post('/register', response_model=RegisterResponse)
async def register(request: RegisterRequest, db: Session = Depends(get_db)):
    email = request.email
    password = request.password
    name = request.name
    phone_number = request.phone_number
    try:
        user_id = user_register(db, email = email, pw = password, name = name, phone_number = phone_number)
        add_default_apikey(db = db, user_id = user_id)
        return {"message": "Register Success"}
    except Exception as e:
        return JSONResponse(content={"error": str(e)}, status_code=500)

회원가입 직후에,
생성된 ID에 기본 API 키를 하나 추가해줍니다.

API 키 호출 함수

def get_api_key(db: Session, user_email: str, provider: str):
    user = db.query(User).filter(User.email == user_email).first()

    user_id = user.id
    if provider == 'openai':
        api = db.query(ApiKey).filter(ApiKey.user_id == user_id, ApiKey.provider_id==4).first()
        if not api:
            return None
        return api.api_key
    elif provider == "anthropic":
        api = db.query(ApiKey).filter(ApiKey.user_id == user_id, ApiKey.provider_id==2).first()
        if not api:
            return None
        elif api.api_key == 'Default API Key':
            return config.DEFAULT_API_KEY
        return api.api_key

API키가 호출될 때에도 ‘Default API Key’라는 값이 있으면,
Core.config에 저장된 기본 API 키 값을 제공합니다.

화면

Leave a Reply

Your email address will not be published. Required fields are marked *

연관 글
BCT NEWS
인기 글
워드프레스 모음
워드프레스 보안
워드프레스 유지보수
워드프레스 제작 팁