오전에는 조건문의 이론 및 실습을 통해 조건문이 어떤건지 어떻게 사용이 되는지에 대해 전반적으로 학습해 보는 시간을 가졌다. 앞으로 코딩을 하면서 반복문과 같이 수 많이 쓰이는게 조건문이기 때문에 확실히 알고 넘어가야 앞으로 문제가 덜 생길 것 같다. 오후에는 밑에서 설명한 두 api의 이론과 컴퓨터 간의 통신 방법에 대해 배웠다. 통신이란게 어렵고 힘든 것이 아닌 인터넷만 연결이 돼있다면 그냥 서로 통신이 가능하다. 그래서 포스트맨과 플레이그라운드를 통해 각각의 api의 사용방법과 차이점이 어떤 것이 있는지에 대해 학습을 해보고 연습문제로 좀 더 익숙해져보는 시간을 가졌다.
자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.
여기서 자원은 해당 소프트웨어가 관리하는 모든 것 예를들면 문서, 그림, 데이터 등등, 이 자원들을 각각 이름을 정의해서 관리를 하게 된다. 전달은 데이터가 요청되어지는 시점에서 자원의 상태, 즉 정보를 전달한다. 일반적으로 JSON, XML을 통해 전달을 하게 된다.
QL은 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용된는 일종의 컴퓨터 언어이다. graphQL은 이런 QL 중에서도 Server API를 통해 정보를 주고받기 위해 사용된다.
위 두 가지의 차이점은 첫 번째 graphQL 주로 하나의 엔드 포인트를 사용한다. REST의 경우에는 자원마다 하나의 엔드포인트를 가지고, 이 엔드포인트에서 자원에 대한 거의 모든 것을 담당한다. 반면 graphQL은 전체 api를 위해서 단 하나의 endpoint만을 사용한다.
두 번째는 graphQL은 요청할 때 사용한 질의문에 따라 응답의 구조가 달라진다. 보통 REST는 하나의 엔드포인트에서 돌려줄 수 있는 응답의 구조가 정해져 있는 경우가 많다. 그래서 api를 작성할 때 이미 정해놓은 구조로만 응답이 오게 되는 것이다. 하지만 graphQL은 사용자가 응답의 구조를 자신이 원하는 방식으로 바꿀 수 있다.
그래서 둘의 차이점에서 오는 장단점이 존재하는데, graphQL은 http 요청 횟수를 줄일 수 있고, 응답의 사이즈를 줄일 수 있다.
단점은 파일전송 등 텍스트만으로 하기 힘든 내용들을 처리하기 복잡하고, 고정된 요청과 응답만 필요로 하는 경우, query로 인해 요청의 크기가 REST의 경우보다 더욱 커지게 된다.
그래서 두 가지중 무엇을 선택해야하는가는 경우에 따라 달라지게 된다. 서로 다른 모양의 다양한 요청들에 대해 응답을 할 수 있어야 할 때는 graphQL를
요청의 구조가 정해져 있을 때 혹은 파일 전송 등의 단순한 텍스트로 처리되지 않는 요청들이 있을 때는 REST를 사용하면 된다.