Soap N Rest
SOAP & REST ํ๋กํ ์ฝ
ํ๋กํ ์ฝ์ ํต์ ๊ท์ฝ ์ฆ ๊ธฐ๊ธฐ ๊ฐ์ ์ํต ๋ฐฉ์์ ๋ฏธ๋ฆฌ ์ ํด ๋จ์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ, ๋ฐ์ดํฐ์ ๋ด์ฉ๊ณผ ๊ตฌ์กฐ, ๋ฐ์ดํฐ ์ ์ก ์ ์ฌ์ฉ๋๋ ์ฃผ์ ๋ฑ์ ๋ฏธ๋ฆฌ ์ ์ํด ๋จ์ฃ . ์์๋ก HTTP / HTTPS / FTP / SFTP / SSH / Telnet / SOAPย ๋ฑ๋ฑ ๊ฐ ๋ชฉ์ ์ ๋ง๊ฒ ์ ํด์ ์๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๐SOAP(Simple Object Access Protocol)
๐SOAP?
- ์น์์ ์๋ ๊ฐ์ฒด(ํ์ํ๋ ๋ฐ์ดํฐ)๋ฅผ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ์
- SOAP์ ๋คํธ์ํฌ ํต์ ์์ ๋ฐ์ดํฐ์ ์ก์์ ์ ๊ด๋ฆฌํ๋ ๊ธฐ์
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ํ ๋ XML ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํ
- ์น์์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉ์์ง ํ๋กํ ์ฝ
- http / https๋ฅผ ํตํด์ XML ๋ฉ์ธ์ง๋ฅผ ๊ตํ
๐์ฉ์ด์ ๋ฆฌ
WSDL(Web Service Description Language)
๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด ๋ณด๋ด๋ ๋ฐ์ดํฐ ์์, ๋ฐ๋ ๋ฐ์ดํฐ ์์ ๋ฑ๋ฑ์ ๊ธฐ์ ํ ์ค๋ช ์์ด๋ค.
WSDL ์์
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl"
xmlns:tns="http://www.example.com/wsdl20sample"
xmlns:whttp="http://www.w3.org/ns/wsdl/http"
xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"
targetNamespace="http://www.example.com/wsdl20sample">
<!-- Abstract types -->
<types>
<xs:schema xmlns="http://www.example.com/wsdl20sample"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/wsdl20sample">
<xs:element name="request">
<xs:complexType>
<xs:sequence>
<xs:element name="header" maxOc
...
UDDI
๊ฐ๋ฐ์๋ค์ด ๋ง๋ WSDL๋ฅผ ์ฌ๋ ค๋์ ํด๋ผ์ฐ๋ ์ ์ฅ์(์ฐฝ๊ตฌ)
๐SOAP ํ๋ก์ธ์ค
ํ๋ก์ธ์ค๋ ๊ฐ๋จํ๋ค ๋ฌผ๋ก ์์ธํ๊ฒ ๋ค์ด๊ฐ๋ค๋ฉด ๋ ๋ณต์กํด ์ง๊ฒ ์ง๋ง ๋ณด๋ด๊ณ ๋ฐ๊ณ ๋ ๋ณด๋ด๊ณ ๋ฐ๊ณ ๋ค. ์์ฒญ ๋ฉ์ธ์ง ์์ฑ => ์์ฒญ ๋ฉ์ธ์ง ์ ์ก (HTTP)=> ์์ฒญ ๋ฉ์ธ์ง ์์ => ์๋ต ๋ฉ์ธ์ง ์์ฑ => ์๋ต ๋ฉ์ธ์ง ์ ์ก (HTTP)=> ์๋ต ๋ฉ์ธ์ง ์์
SOAP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ์ํด์ WSDL(์์) UDDI์ ๋ฑ๋ก ํ ํต์ ์ ํ ๋๋ง๋ค ๋ฌด์กฐ๊ฑด ๊ฑฐ์ฒ์ผ ํ๋ค. ์ด๋ ์ฑ๋ฅ ๋ฐ ์๋๊ฐ ๋จ์ด์ง๋ค. ๋ ๊ธฐ์ ์ ์ผ๋ก๋ ์๋นํ ๋ณต์กํ๋ค ์ WSDL ์์์ ๊ฐ์ด ๋ณต์กํ ์์์ ์์ฑํด์ผํ๋ค. ์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด REST ํต์ ์ด ๋์๋ค.
๐REST(Representational State Transfer)
- URI(Uniform Resource Identifier)๋ฅผ ํตํด ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ง์
- HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ฅผ ์ด์ฉํ์ฌ ์์์ ๋ํ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌ
- ์๋ฒ์ ์ง์ ํต์ ํ์ง๋ง SOAP์ฒ๋ผ ์ค๊ฐ์ ๋จ๊ณ๋ฅผ ์ถ๊ฐ๊ฐ๋ฅ
- ์บ์๋ฅผ ํตํด ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์๋ฒ๋ถํ ๋ฐ ์ฒ๋ฆฌ์๋ ํฅ์
๐REST ๋ฉ์๋ ์ ๋ฆฌ
์์ฃผ์ฌ์ฉ
- GET: ๋ฐ์ดํฐ ์กฐํ(๋ฐ์ดํฐ ์์ฑ, ์ถ๊ฐ ๋ถ๊ฐ)
- POST: ๋ฐ์ดํฐ๋ฅผ ์์ฑ
- PUT: ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ
- DELETE: ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ธฐ
- PATCH: ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์์
์์ฃผ ์ฌ์ฉx
- HEAD: ๋ฐ์ดํฐ ์กฐํ (์๋ต ๋ณธ๋ฌธ ๋ฏธํฌํจ) / ์๋ฒ์ ์๋ต ์ํ๋ฅผ ํ์ธ์ฉ
- OPTIONS: ์๋ฒ์์ ์ง์ํ๋ ๋ฉ์๋์ ์ข ๋ฅ, ์ง์ํ๋ ํค๋, CORS ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ป์ ๋ ์ฌ์ฉ
- CONNECT: ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉํ(์ฃผ๋ก ํ๋ก์์ ๊ฐ์ ์ค๊ฐ ์๋ฒ)
- TRACE: ์์ฒญ์ด ์๋ฒ์ ๋๋ฌํ ๋๊น์ง ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ๋ฐ๋ณตํด์ ๋๋ ค์ฃผ๋ ๋ฉ์๋(๋๋ฒ๊น ์ฉ)
๐RESTful
์๋ ํน์ง์ ๊ฐ์ง ์๋น์ค๋ฅผ RESTfulํ ์๋น์ค๋ผ๊ณ ์ ์ํ๋ค.
- ์์(Resource) ์ค์ฌ์ ์ธ URI ์ค๊ณ
- HTTP Method๋ฅผ ์ด์ฉํ ์์ ์ฒ๋ฆฌ
- Stateless(์ํ๋ฅผ ์ ์งํ์ง ์์)
- Self-descriptive message(๋ฉ์์ง ์ค์ค๋ก๋ฅผ ์ค๋ช ํ ์ ์๋ ์์ฒด ํํ ๊ตฌ์กฐ)
- HATEOAS(Hypermedia As The Engine Of Application State)๋ฅผ ๋ง์กฑํ๋ ํ์ดํผ๋ฏธ๋์ด ์ ๊ณต
๐๊ฒฐ๋ก
๋ ๋ฐฉ์์ค์ ์ด๋ค ๋ฐฉ์์ด ์ ๋ต์ด๋ผ๊ณ ํ ์ ์๋ค ์ํคํ ์ณ๋ ์๋ก์ด ์์ฅ์ ์๊ตฌ๊ฐ ๋ฌ๋ผ ์ก๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ฐ์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง๋ ๊ฒฝ์ฐ๋ ๋๋ฌ ์๋ค. ์๋๋ฅผ ์ป๋ ๋ณด์์ฑ๊ณผ ํ์คํ๋ฅผ ๋์ ๊ฒ์ธ๊ฐ ๋ณด์์ฑ์ ํ์คํ๋ฅผ ์ป๋ ์๋์ ํธ๋ฆฌํจ์ ๋์ ๊ฒ์ธ๊ฐ๋ ์ด๋ค ์๋น์ค๋ฅผ ์ ๊ณตํ๋์ง ๋ ์ด๋ค ๋ถ๋ถ์ ์ค์ฌ์ผ๋ก ์๋น์ค๋ฅผ ๋ง๋ค๊ฑด์ง์ ์ด์ฒจ์ ๋ง์ถฐ์ผ๋๋ค๊ณ ์๊ฐํ๋ค.