네트워크 면접 단골질문

실제 면접 질문에서 자주 물어보는 내용! 면접 질문을 받았을 때 어떻게 대답할까?

RESTful API에 대해 설명해주세요.

REST 아키텍처 스타일을 따르는 API입니다.

REST 아키텍처 스타일에는 ‘균일한 인터페이스’, ‘무상태’, ‘계층화 시스템’, ‘캐시 가능성’ 등의 6가지 원칙이 있으며, 이러한 REST API는 자원(resource, URI). 행위(verb, Method), 표현(representation)으로 이루어집니다.

즉, 정보의 자원을 표현하는 URI와 자원의 행위를 표현하는 HTTP 메서드로 이루어진 API를 뜻합니다.

HTTP 통신에 대해 설명해주세요.

HTTP는 HyperText Transfer Protocol의 약자로 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 프로토콜입니다.

클라이언트가 요청을 위해 TCP 연결을 한 다음, HTTP 메시지를 전송하고, 서버로부터 유효한 응답이 오는 과정으로 통신이 이루어집니다.

HTTP/1.1부터는 한 번 연결을 완료한 클라이언트가 다른 요청을 보낼 수 있도록 서버로부터 응답이 와도 그 연결을 해제하지 않습니다. 그래서 한 번 파이프라인이 생성되면 응답 완료 시점을 기다릴 필요 없이 여러 요청을 보낼 수 있습니다.(이 때 순서는 보장되어야 합니다. HTTP/2부터 병렬 연결이 가능합니다.)

HTTP 메서드 GET과 POST의 차이에 대해 설명해주세요.

클라이언트와 서버가 데이터를 교환하기 위해 메시지를 주고받는데, 이 메시지는 요청(request)과 응답(response)로 이루어집니다.

이 메시지에는 HTTP 메서드, URL(포트, 도메인 등), 헤더, 콘텐츠 등이 들어가 있습니다.

여기서 HTTP 메서드는 서버가 수행해야 할 동작을 나타내며, CRUD 작업을 위해 POST, GET, PUT, DELETE 등의 메서드를 사용합니다.

GET과 POST는 대표적으로 사용 목적에 그 차이가 있는데, GET은 리소스를 요청할 때, POST는 리소스를 생성하거나 수정할 때 사용합니다.

GET은 요청하는 리소스의 정보를 URL에 쿼리 등으로 담아 보내기 때문에 HTTP 바디에 내용이 없습니다.

반면에 POST는 리소스를 생성하고 수정하는 요청이기 때문에 그 데이터를 HTTP 바디에 담아 보낸다는 차이점이 있습니다.

Postman으로 api 호출하기

  1. Postman을 켠다
  2. 새 Collection을 만든다
  3. 새 Request를 만든다
  4. Run하고 응답 결과를 본다

이 방법으로 수행하면 된다.

1. 모든 posts GET하기

  • HTTP Method: GET
  • URI: /posts
  • URL: https://jsonplaceholder.typicode.com

위 정보를 기반으로 요청을 보내면 다음과 같은 응답이 나온다.

[
    {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
        "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    },
    {
        "userId": 1,
        "id": 2,
        "title": "qui est esse",
        "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
    },
	... (생략)
]

2. 2번 post 조회하기

  • HTTP Method: GET
  • URI: /posts/2
  • URL: 1번과 같음

위 정보를 바탕으로 요청을 보내면 다음과 같이 2번 Post에 대한 응답이 온다.

{
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}

3. 3번 post에 대한 comment 조회하기

  • HTTP Method: GET
  • URI: /posts/3/comments
  • URL: 상동

이 방법이 하나 있고, 아래와 같이 comment URI에 post의 ID 쿼리를 붙여 받는 방법도 있다.

  • HTTP Method: GET
  • URI: /comments
  • query: postId=3
  • URL: 상동

두 개의 요청은 다음과 같다.

// 첫번째 방법
https://jsonplaceholder.typicode.com/posts/3/comments

// 두번째 방법
https://jsonplaceholder.typicode.com/comments?postId=3

Postman에서 query는 Params 탭에 key, value 값에 각각 넣으면 위와 같이 ?key=value 형태로 만들어준다.

이 결과는 다음과 같다.

[
    {
        "postId": 3,
        "id": 11,
        "name": "fugit labore quia mollitia quas deserunt nostrum sunt",
        "email": "Veronica_Goodwin@timmothy.net",
        "body": "ut dolorum nostrum id quia aut est\nfuga est inventore vel eligendi explicabo quis consectetur\naut occaecati repellat id natus quo est\nut blanditiis quia ut vel ut maiores ea"
    },
    {
        "postId": 3,
        "id": 12,
        "name": "modi ut eos dolores illum nam dolor",
        "email": "Oswald.Vandervort@leanne.org",
        "body": "expedita maiores dignissimos facilis\nipsum est rem est fugit velit sequi\neum odio dolores dolor totam\noccaecati ratione eius rem velit"
    },
	... (생략)
]

4. post 등록하기

  • HTTP Method: POST
  • URI: /posts
  • URL: 상동

POST는 GET과 유사하지만, POST할 내용이 HTTP body에 들어가야 한다.

이 때, POST되는 내용은 JSON 형태로 이루어져야 하며, 앞서 GET을 통해 받은 결과를 미루어 보아 userId, title, body의 값이 들어가야 한다.

Body에 JSON 형식의 데이터를 넣어 POST하면 101번 id에 내가 요청한 값이 잘 생성된 것을 확인할 수 있다.

Postman으로 공공 데이터 api 호출하기 (심화)

공공데이터 포털에 있는 API를 호출해보았다.

원래는 음식점 배달/포장 가능 여부와 전화번호, 위치, 음식 타입 등이 있는 정보를 찾고 싶었으나,,, 그런 건 없었다,,

그래서 그냥 재밌어보이는 정보를 찾아보기로 했다!

서울올림픽기념국민체육진흥공단_국민체력100 동영상 정보..!!

API 활용 신청을 누르면 간단하게 어떤 용도로 사용하는지 등에 대해 적고 인증키와 활용정보 등에 대한 내용을 얻을 수 있다.

required된 쿼리를 입력하면 Body에 내용이 나온다.

느낀점

같은 스터디조원이 RESTful API와 REST API의 차이를 물어봤다.

지금껏 두 개가 같은 거라고 생각해왔는데, 멘토님이 REST 원칙과 RESTful API 명세할 때 일반적으로 따르는 형식은 다른 것이라고 이야기했다.

이론으로서의 REST와 API 명세에 있어 RESTful이 명확히 구분됨을 느꼈고, 이런 사소한 부분에서 앎의 차이가 난다고 느꼈다.

네트워크 공부할 때, 그리고 실제로 API 명세를 할 때 REST, REST API에 대해 열심히 찾아보고 나름대로 정의도 내려봤는데 이번 기회에 더 명확하게 구분지을 수 있어서 좋았다.

댓글남기기