정보처리기사 실기를 공부하다가 "SOAP 방식"에 대해 공부하다가 궁금점이 생겼다!
SOAP과 RESTful 의 차이점을 아주 정확하게 알고 가자!
먼저 쉽게 이해할 수 있는 쉬운 예시를 들어보겠다!
SOAP (Simple Object Access Protocol) : "엄격한 택배 회사"
- 예) FedEx 같은 택배 회사.
- 보내는 포맷은 항상 정해진 박스(XML 형식)이며, 송장도 복잡하다(헤더, 바디 구조).
- 보안, 신뢰성, 트랜잭션이 철저함.
- 문서 형식대로 정확히 안 맞으면 배달 안함.
- 프로토콜도 정해져 있음: HTTP뿐만 아니라 SMTP, FTP 등도 사용 가능.
👉 장점: 안정성, 신뢰성 필요할 때 좋음 (예: 은행, 기업 내부 시스템)
👉 단점: 무겁고 느림, 개발하기도 어려움
RESTful (Representational State Transfer) : "자유로운 택배 앱"
- 예) 신생 배달앱 같은 느낌.
- 보내는 포맷은 JSON 같은 가볍고 쉬운 포맷 사용.
- 주소(URL)로 자원 접근하고, 동사는 HTTP 메서드(GET, POST, PUT, DELETE 등)로 표현함.
- 프로토콜은 HTTP만 사용함. 규칙은 있지만 비교적 자유롭다.
👉 장점: 가볍고 빠르고 개발이 쉬움 (웹/모바일에서 주로 사용)
👉 단점: 보안, 트랜잭션 등 고급 기능은 직접 구현해야 함
표로 차이점 정리!
SOAP | RESTful | |
프로토콜 | 다양한 프로토콜 지원 (HTTP, SMTP 등) | HTTP만 사용 |
메시지 형식 | XML | JSON, XML 등 자유 |
규격 | 엄격한 표준 (WSDL-web service description language 등) | 자유롭고 유연 |
속도 | 느림 | 빠름 |
보안/신뢰성 | 고급 기능 내장 | 직접 구현 필요 |
예시 | 은행, 기업 시스템 | 웹서비스, 모바일 앱 등 |
실제로 코드로 보면 SOAP 과 RESTful 의 차이점이 아주 극명하게 드러난다!
둘 다 간단한 "사용자 정보 가져오기" 예시를 가져왔다!
사용자 ID가 123인 사람의 정보를 불러오는 상황.
아래 접은글을 펼치면 확인할 수 있다!
- SOAP은 딱 정해진 문서 형식, 회사 보고서 느낌.
- REST는 직관적이고 빠른 메신저 대화 느낌!
1. SOAP : XML 기반, 복잡한 구조
더보기
POST /UserService HTTP/1.1
Host: example.com
Content-Type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:usr="http://example.com/user">
<soapenv:Header/>
<soapenv:Body>
<usr:GetUserRequest>
<usr:UserId>123</usr:UserId>
</usr:GetUserRequest>
</soapenv:Body>
</soapenv:Envelope>
응답도 정해진 XML 형식으로 옴.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<GetUserResponse>
<User>
<Id>123</Id>
<Name>홍길동</Name>
<Email>hong@example.com</Email>
</User>
</GetUserResponse>
</soapenv:Body>
</soapenv:Envelope>
2. RESTful 예시: URL + JSON, 직관적
더보기
GET /users/123 HTTP/1.1
Host: example.com
Accept: application/json
응답은 JSON!
{
"id": 123,
"name": "홍길동",
"email": "hong@example.com"
}
정처기 실기 한방에 따야지! 파이팅!
'Computer Science > CS 지식 모음' 카테고리의 다른 글
MVC 패턴과 RESTul API 의 차이점? 두 방법에 대해 알아보자! with SpringBoot (0) | 2025.01.30 |
---|---|
[Web] 서블릿과 JSP 에 대해 자세히 알아보자! (1) | 2024.10.20 |
헷갈리는 세션(session)과 브라우저 쿠키(cookie), 차이점 자세히 알아보기! (0) | 2024.10.20 |
[Web] HTTP 프로토콜과 GET / POST 방식에 대하여! (4) | 2024.10.20 |