REST API란 클라이언트와 서버간에 자원을 주고 받기위한 통신 방법을 정의한 아키텍처로 URL에 자원의 이름을 명시하고 해당 자원에 대한 행위를 http request method로 정의하여 CRUD 연산을 수행합니다.
RESTful API란 REST API를 사용할 때 규칙을 잘 준수하고 있는지를 말합니다.
자원을 명사로 정의한다, 계층 구조를 슬래시를 사용해 표현한다, 자원에 대한 처리 방법은 URL에 명시하지 않고 request method로 정의한다, 언더스코어 대신 하이픈을 사용한다, 소문자를 사용한다
OAuth 에 대해 설명하세요
Oauth는 서비스 사용자들이 비밀번호를 제공하지 않아도 리소스 서버에서 제공하는 사용자 정보 접근권한을 인증 서버에 위임하는 개방형 표준 프로토콜입니다.
Oauth 2.0 흐름에 대해 .. 정리해야 할 듯
쿠키/토큰 방식 로그인에 대해서 설명하세요
쿠키는 작은 데이터 조각으로 최대 4kb 정보를 저장할 수 있습니다. http 헤더 메커니즘을 따르며, 사용자 인증 정보를 담고있는 쿠키를 서버의 응답헤더에 담아 전송하면 이를 클라이언트 로컬 브라우저에 저장합니다. 쿠키는 사용자 인증 정보가 그대로 노출되기 때문에 보안상의 위험이 있기 때문에 정보를 암호화할 수 있는 토큰 인증 방식으로 정보를 보호할 수 있습니다.
대표적인 토큰 인증 방식으로 JWT이 있습니다. JWT는 header, payload, signature 3가지 영역으로 구분되며 header엔 signature에서 수행할 암호화 알고리즘과 토큰 타입이, payload는 claim단위의 정보를 가지고 있고, signature는 base64 포멧의 header와 payload 문자열을 결합해 secret key를 통한 암호화를 수행합니다. 클라이언트에서 Authorization header에 bearer 토큰타입과 함께 요청을 전송하게 됩니다.
React에서 선호하는 상태관리 방식에 대해서 설명하세요
클라이언트 상태는 상태 끌어올리기를 통한 공통 부모에서 상태관리를 수행하고, Props의 전달이 2 depth 이상일 경우 커스텀 훅으로 분리하여 상태를 호출하여 리렌더링을 최소화합니다. 앱 전역에서 쓰이는 상태라면 비교적 간단한 경우 Context api로 전역 상태를 관리하고, 서버로 부터 받은 상태는 react-query를 사용해 응답데이터를 캐싱해 재사용 하는 방식을 사용합니다. 추가적으로 불필요한 요청 오버헤드를 줄일 수 있고, loading과 error 상태 처리, 재요청과 관련된 API를 제공한다는 장점 또한 존재합니다.