네트워크/API 및 웹 서비스

[웹 서비스] REST vs SOAP: 차이점, 장단점, 사용 사례와 예제 코드 비교

CodeCaine Explorer 2024. 12. 18. 11:13
728x90
반응형
SMALL

1. REST와 SOAP의 기본 개념

REST

  • REST는 데이터를 주고받는 데 가볍고 단순한 방식이에요.
  • 보통 HTTP를 통해 요청과 응답을 주고받습니다.
    (HTTP는 우리가 웹사이트를 볼 때 사용하는 통신 방식이에요!)
  • 데이터를 주고받는 형식으로 JSON이나 XML을 주로 사용합니다.

📌 쉽게 이해하기

REST는 택배 체계와 비슷해요! 📦

  • 내가 원하는 물건(데이터)을 주소(URL)로 요청하면 택배 기사(서버)가 물건을 가져다줍니다.
  • JSON이나 XML은 상자(포장 형태)로 이해하면 됩니다.

SOAP

  • SOAP은 데이터를 주고받는 데 더 복잡하고 엄격한 규칙을 사용해요.
  • 보통 XML 형식을 사용하고, 보안과 메시지 형식에 많은 규칙이 있습니다.
  • REST보다 무겁지만, 은행 시스템 같은 고도 보안이 필요한 곳에서 주로 사용합니다.

📌 쉽게 이해하기

SOAP은 고급 우체국 서비스와 같아요! 🏦📮

  • 물건(데이터)을 보내기 전에 모든 서류와 인증 절차를 거쳐야 합니다.
  • 보안과 정확성이 중요할 때 적합하지만 시간이 더 걸립니다.

2. REST와 SOAP의 차이점

특징 REST SOAP
데이터 포맷 JSON, XML XML만 사용
프로토콜 HTTP HTTP, SMTP 등 다양한 프로토콜
속도 빠르고 가벼움 느리고 무거움
사용 예시 소셜 미디어, 웹 서비스 은행, 결제 시스템
보안 기본 보안 (SSL 등 사용) 고급 보안 (WS-Security 등)

3. REST 예시 코드

학생 정보 가져오기 (GET 요청)

-- REST API에서 학생 정보를 요청하는 SQL 쿼리 예시
SELECT * 
FROM Students
WHERE StudentID = 1;
-- 학생 ID가 1인 학생 정보를 요청합니다.

동작 설명

  1. SELECT *는 학생 정보를 모두 가져오는 명령입니다.
  2. WHERE StudentID = 1특정 학생(1번 ID) 정보를 요청하는 조건입니다.
  3. 이 요청은 RESTful 서비스에서 GET 요청으로 발송됩니다.
    예) GET /students/1

4. SOAP 예시 코드

학생 정보 요청 (SOAP XML 메시지)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stu="http://students.example.com">
   <soapenv:Header/>
   <soapenv:Body>
      <stu:GetStudent>
         <stu:StudentID>1</stu:StudentID>
      </stu:GetStudent>
   </soapenv:Body>
</soapenv:Envelope>

동작 설명

  1. SOAP 메시지는 Envelope(봉투)로 데이터를 감쌉니다.
  2. Header
    는 메시지의 부가 정보를 담고 있고,에가 있습니다.
    • 여기서는 학생 ID가 1인 정보를 요청하는 내용이 포함됩니다.
  3. 요청 데이터
  4. Body
  5. 서버는 XML 형식으로 응답을 돌려줍니다.

5. REST와 SOAP의 작동 과정 비교

📌 REST 요청

  1. 클라이언트: GET /students/1
    (학생 ID가 1인 정보를 주세요!)
  2. 서버: JSON 형식으로 응답
  3. { "StudentID": 1, "Name": "Alice", "Age": 22, "Major": "Computer Science" }

📌 SOAP 요청

  1. 클라이언트: XML 메시지 전송
    (학생 ID가 1인 정보를 주세요!)
  2. 서버: XML 형식으로 응답
  3. <soapenv:Envelope> <soapenv:Body> <GetStudentResponse> <StudentID>1</StudentID> <Name>Alice</Name> <Age>22</Age> <Major>Computer Science</Major> </GetStudentResponse> </soapenv:Body> </soapenv:Envelope>

6. 쉽게 외우는 요점

  • REST는 빠르고 가볍다! 🚀 (소셜미디어, 웹서비스)
  • SOAP은 느리지만 안전하다! 🛡️ (은행, 결제 시스템)
728x90
반응형
SMALL