from pydantic import BaseModel, field_validator
from codes.dns_servers import dns_servers
class dnsNameRequest(BaseModel): # DNS 서버 이름 유효성 검사
name : str
@field_validator('name')
def name_servers(cls,value):
if value not in dns_servers:
raise ValueError(f"'{value}'는 유효한 DNS 서버가 아닙니다.")
return value;
dnsNameRequest: validator 데코레이터를 사용하여 name 필드에 대해 유효성 검사 함수를 지정하여, dns_server에 name이 존재하는지 유효성 검사를 합니다.
잘못된 형식일 경우 ValueError를 사용하여 422 응답을 반환합니다.
@router.post("/apply", response_model=statusResponse)
def dns_apply(request: dnsNameRequest):
from pydantic import BaseModel
from pydantic.networks import IPv4Address
class dnsIpRequest(BaseModel): # DNS IP 형식 유효성 검사
ip : IPv4Address
dnsIpRequest: ip가 IPv4타입인지 유효성 검사를 해주는 BaseModel
잘못된 형식일 경우 자동으로 ValidationError을 반환합니다.
try:
dnsIpRequest(ip=server_ip)
except ValidationError:
raise HTTPException(
status_code=500,
detail=f"{server_ip}는 유효한 IP 형식이 아닙니다."
)
class statusResponse(BaseModel):
message : str
statusReponse: message가 str 타입인지 유효성 검사를 합니다.
잘못된 형식일 경우 를 발생
from pydantic import ValidationError
@router.post("/apply", response_model=statusResponse)
...
status = "Google로 설정 완료"
return {"message": status}