Rest API 요청 방법

Ada·2024년 1월 8일
0

자유 공부

목록 보기
18/19

REST API는 네트워크를 통해 서버와 클라이언트가 상호작용하는 방법을 제공하며, 데이터를 주고받는 방식에는 주로 쿼리 스트링(Query String)과 바디(Body)를 사용합니다.

쿼리 스트링(Query String):

URL의 일부로서 데이터를 전송합니다.
주로 간단한 데이터나, 검색 필터 등을 전달할 때 사용됩니다.

예: https://example.com/api/users?name=John&age=30
여기서 name=John과 age=30은 쿼리 스트링입니다.

바디(Body):

HTTP 요청의 본문 부분에 데이터를 실어 보냅니다.
주로 복잡하거나 큰 양의 데이터를 전송할 때 사용됩니다.
JSON, XML 등 다양한 형식을 사용할 수 있습니다.

예: POST 요청에서 JSON 형태로 사용자 정보를 전송하는 경우.



쿼리 스트링을 사용하는 경우:

path("search") {
  get {
    parameters('name.as[String], 'age.as[Int]) { (name, age) =>
      complete(s"검색 이름: $name, 나이: $age")
    }
  }
}

이 경우, 클라이언트는 https://[hostname]/search?name=John&age=30와 같은 URL을 사용하여 요청합니다.

바디를 사용하는 경우:

path("create-user") {
  post {
    entity(as[String]) { body =>
      complete(s"받은 데이터: $body")
    }
  }
}

클라이언트는 HTTP POST 요청의 바디에 데이터(예: JSON 문자열)를 실어서 https://[hostname]/create-user로 보냅니다.

데이터 형식 구별 방법:

API 문서 확인:

가장 정확한 방법은 API를 제공하는 서비스의 공식 문서를 확인하는 것입니다. 여기에는 각 엔드포인트에 대한 상세한 설명과 함께 요구되는 데이터 형식과 구조가 명시되어 있습니다.

컨텐츠 형식(Content-Type) 헤더:

HTTP 요청 시 Content-Type 헤더를 통해 바디의 데이터 형식을 서버에 알립니다. 예를 들어, JSON 형식의 데이터를 보내려면 Content-Type: application/json을, 폼 데이터를 보내려면 Content-Type: application/x-www-form-urlencoded 또는 multipart/form-data를 사용합니다.

서버 측 구현:

서버 측에서는 특정한 Content-Type에 따라 데이터를 처리하는 로직을 구현합니다. 예를 들어, Scala와 Akka HTTP를 사용하는 경우, entity(as[Json]) 또는 entity(as[FormData])와 같은 방식으로 특정 데이터 형식을 처리할 수 있습니다.

예시

// JSON 데이터를 처리하는 경우
post {
  entity(as[Json]) { jsonBody =>
    // JSON 데이터 처리 로직
  }
}

// 폼 데이터를 처리하는 경우
post {
  entity(as[FormData]) { formData =>
    // 폼 데이터 처리 로직
  }
}

JSON 데이터 처리:

데이터 형식:

JSON

HTTP 헤더:

Content-Type: application/json

데이터 전송 예시:

{
  "key1": "value1",
  "key2": "value2"
}

클라이언트 요청 예시:

여기서는 HTTP 요청의 바디에 JSON 형식의 데이터를 실어 보냅니다.
예를 들어, curl을 사용하는 경우 요청은 다음과 같습니다:

curl -X POST https://example.com/endpoint -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}

폼 데이터 처리:

데이터 형식:

폼 데이터 (application/x-www-form-urlencoded 또는 multipart/form-data)

HTTP 헤더:

Content-Type: application/x-www-form-urlencoded 또는 Content-Type: multipart/form-data

데이터 전송 예시:

application/x-www-form-urlencoded 형식:

key1=value1&key2=value2

multipart/form-data 형식은 주로 파일 업로드에 사용됩니다.

클라이언트 요청 예시:

여기서는 HTTP 요청의 바디에 URL 인코딩된 폼 데이터를 실어 보냅니다.
curl을 사용하는 경우 요청은 다음과 같습니다:

curl -X POST https://example.com/endpoint -H "Content-Type: application/x-www-form-urlencoded" -d "key1=value1&key2=value2"
profile
백엔드 프로그래머

0개의 댓글