혹시 몰라서 잠깐 라우팅에 대한 설명 좀 하고 감


---


웹을 순수하게 c언어로 구현한다고 생각해봐

매 클릭마다 html을 일일이 띄워주는 식으로 개발해야겠지? html분기 관리도 if문으로 해줘야 할 거임.


생각만해도 피곤하잖아?


그래서 나온 게 라우팅임.

라우팅은 url로 코드를 실행시키는 걸 말함


아래 코드를 보자


@app.get("/")

def 홈():

    return {"message": "여기가 메인 페이지야"}


@ <- 이게 붙으면 데코레이터라고 함.

@ 이후에 붙는 app는 지금 돌아가고 있는 해당 프로그램의 이름임. python app.py 뭐 이렇게 실행한 거지.


여기까진 안중요하고 그 다음에 나오는 get과 /가 본론이다


get은 유저가 요청했을 때 실행되는 코드란 의미고

'/'는 유저가 뭘 요청했느냐임. 현재는 유저가 /를 요청한 거지.


/가 아니라 /ping을 요청할 수 도 있음.


@app.get("/ping")

def ping():
    return {"status": "ok", "timestamp": time.time()}


이렇게 간단히 작동하나 안하나 체크용으로 prig을 만들 수도 있을 거임.


내가 '컴퍼니.com' 란 도메인을 갖고 있고 이걸 DNS로 열었다면

유저가 주소창에 http://컴퍼니.com/ 이렇게 칠 시 "여기가 메인 페이지야" 라는 글자가 뜨고

http://컴퍼니.com/ping 이렇게 쳤으면 ping을 return으로 돌려받을 수 있다는 거지.


cURL나 리퀘스츠 같은 라이브러리를 쓰고 있다면

result = requests.get('http://컴퍼니.com/ping') 이렇게 할 시

반환값으로 핑을 받을 수 있음. result에 그 값이 들어있겠지.


이해되지?


내가 유저에게 보내는 경우면 POST를 쓰면 되고

이외에도 PUT이나 DELETE도 있음.


---


라우팅에 대해 이해됐으면 네 문제에 대한 답도 간단하겠지?

백엔드가 찐빠를 내서 id를 널값으로 보냈으면


def 우리백엔드폐급이네(id):

  if 아이디==널:

    logging.error("고객의 아이디로 널 값을 받았습니다.")


이렇게 하면 되고 고객에게 보여줄 메세지가 필요하면 별도의 html을 만들어


<!DOCTYPE html>

<html>

<head>

  <title>서비스 오류</title>

</head>

<body>

  <h1>죄송합니다.</h1>

  <p>고객님의 정보를 불러오지 못했습니다.</p>

  <p>잠시 후 다시 시도해주시거나, 고객센터로 문의해주세요.</p>

</body>

</html>



def 우리백엔드폐급이네(id):

  if 아이디==널:

    불러오기(서비스 오류.html)

    logging.error("고객의 아이디로 널 값을 받았습니다.")