UMC 1기 Server Session 6주차 워크북

redjen·2021년 11월 14일
0

1. 학습 목표

  1. RESTful한 설계방식에 대해 이해한다.
  2. Server to Server 통신에 대해 이해한다.
  3. 템플릿 구조에 대해 이해하고 실습해본다.

2. 6주차 수업 후기

💡 6주차 수업 듣고 느낀점 이야기, 각자 진행상황 공유

저번 주차에 작성했던 API들을 보며 어떻게 해야 실제 환경에서 잘 동작하는 API를 설계할 수 있을까 고민했습니다. RESTFul 하게 API들을 만들기 위해 수정하는 과정에서 Validation과 같은 다양한 고민을 할 수 있어서 좋았습니다.

3. 실습


AWS RDS 서비스에 테이블 EXPORT 한 모습


GET /api/member/get/{idx} 사용자 정보 조회 API

PATCH /api/member/quit/{idx} 사용자 탈퇴 처리 API

업데이트 된 코드 Github 링크

실습 체크리스트

❗️ 이번 주차는 개념적인 내용보다는 REST API를 최대한 많이, 꼼꼼하게 설계&구현해보면서 템플릿에 익숙해지는 게 핵심입니다. 이번 과제 API 최소 개수는 10개이지만 가능한만큼 최대로 많이 만들어오시면 됩니다.

  • 프록시 서버 설정 / 서버 무중단 배포 ( 스프링부트의 경우 7주차에 진행해주세요! )
  • 지난 주 과제때 설계/구현한 API에 RESTful원칙을 적용하고 템플릿을 사용해서 구현하기
  • API 추가 구현하기
  • HTTP Method를 모두 사용해보기
  • Path Variable, Query String, Body를 모두 사용해보기
  • 형식적/논리적 Validation 추가하기
  • API Sheet 작성 (Swagger 대체)

4. 핵심 키워드

  • REST/RESTful Representational State Transfer의 약자로써, HTTP를 더 잘 활용하기 위해서 고안된 아키텍쳐입니다. REST API는 URI, HTTP METHOD, 표현으로 구성되며 Restful 한 API 설계를 위해서는 몇 가지 규칙들이 정해져 있습니다.
    1. URI는 정보의 자원을 표현해야 한다.

    2. 자원에 대한 행위는 HTTP Method으로 표현

      따라서 자원에 대한 CRUD API를 작성할 때는 URI + HTTP Method 만으로 이 API가 어떤 자원에 대해서 어떤 행위를 할 지 알 수 있어야 합니다.

  • HTTP Method
    • GET : CRUD의 Read에 해당합니다. 서버 상의 리소스를 읽고 가져오는 역할을 합니다.
    • POST : CRUD의 Create에 해당합니다. 서버 상의 리소스를 새로 생성하는 역할을 합니다. Idempotent 하지 않아서 실행할 때 마다 같은 결과를 보장하지는 못합니다.
    • PATCH : CRUD의 Update에 해당합니다. 서버 상의 리소스를 일부 수정하는 역할을 합니다.
    • PUT : CRUD의 Update에 해당합니다. 마찬가지로 서버 상의 리소스를 수정하는 역할을 합니다. PATCH 메소드와 다른 점은 PATCH 메소드는 자원의 일부만 수정하는데 비해 PUT 메소드는 자원의 전체를 수정하는 메소드입니다.
    • DELETE : CRUD의 Delete에 해당합니다. 서버 상의 리소스를 삭제하는 역할을 합니다.
    • 이외의 다른 메소드
      • CONNECT : CONNECT 메서드는 목표 리소스의 터널 연결을 체결하는 역할을 합니다.
      • OPTIONS : OPTIONS 메서드는 목표 리소스와의 통신 옵션을 기술하는 역할을 합니다.
      • TRACE : TRACE 메서드는 목표 리소스와의 루프 백 테스트를 수행합니다.
  • HTTP Response Code 의미 5개의 클래스로 분류됩니다.
    1. 1XX : 요청을 받았으며 프로세스를 계속한다는 의미입니다. 101 코드는 요청자가 서버에 프로토콜 전환을 요청했으며 서버가 이를 승인하는 중이라는 의미입니다.
    2. 2XX : 요청을 성공적으로 처리했다는 의미입니다. 200 코드는 서버가 요청을 제대로 처리했다는 뜻입니다. GET Method에 200 Response 코드를 받았다면 서버가 요청한 리소스를 제대로 제공했음을 가르킵니다.
    3. 3XX : 요청 완료를 위해 추가 작업 조치가 필요하다는 의미입니다. 301 코드는 해당 요청이 들어오면 자동으로 새 위치로 전달됩니다. 리다이렉션에 대한 응답 코드입니다.
    4. 4XX : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다는 의미입니다.
      1. 401 : 권한이 없는 경우입니다. 인증 실패 - 사용자가 누구인지 확인에 실패함
      2. 403 ; 서버가 요청을 거부하고 있는 경우입니다. 인가 실패 - 사용자가 요청에 대한 해당 권한이 없는 경우.
      3. 404 : 서버가 요청한 페이지를 찾을 수 없는 경우입니다.
    5. 5XX : 서버가 명백히 유효한 요청에 대해 충족을 실패했다는 의미입니다. 500 코드는 서버에 오류가 발생해서 요청을 수행할 수 없는 경우입니다.
  • Reverse Proxy WAN에서 들어오는 요청을 LAN으로 들이기 전에 서버를 한번 거치게 하는 설게 방식입니다. 클라이언트 요청의 중간자로써 웹 서버가 응답하는 데이터의 버퍼링이나 보안 상에서 이점을 가져갈 수 있습니다.

5. 논의해보면 좋은 것들

각자 작성한 API Sheet를 살펴보면서 서로 피드백하는 시간을 가져보세요!

  • API설계가 RESTful한지
  • Response 데이터 구조는 적절한지
  • Response에 빠진 데이터는 없는지
  • Validation은 꼼꼼하게 처리했는지
  • API Sheet가 보기 좋게 잘 정리되어 있는지
profile
make maketh install

0개의 댓글