Soap N Rest

SOAP & REST ํ”„๋กœํ† ์ฝœ

network

ํ”„๋กœํ† ์ฝœ์€ ํ†ต์‹ ๊ทœ์•ฝ ์ฆ‰ ๊ธฐ๊ธฐ ๊ฐ„์˜ ์†Œํ†ต ๋ฐฉ์‹์„ ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†จ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” ๋ฐฉ๋ฒ•, ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ๊ณผ ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์†Œ ๋“ฑ์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋†จ์ฃ . ์˜ˆ์‹œ๋กœ HTTP / HTTPS / FTP / SFTP / SSH / Telnet / SOAPย ๋“ฑ๋“ฑ ๊ฐ ๋ชฉ์ ์— ๋งž๊ฒŒ ์ •ํ•ด์ € ์žˆ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ŒSOAP(Simple Object Access Protocol)

๐Ÿ“ŒSOAP?

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)๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํ•˜์ดํผ๋ฏธ๋””์–ด ์ œ๊ณต

๐Ÿ“Œ๊ฒฐ๋ก 

๋‘ ๋ฐฉ์‹์ค‘์— ์–ด๋–ค ๋ฐฉ์‹์ด ์ •๋‹ต์ด๋ผ๊ณ  ํ• ์ˆ˜ ์—†๋‹ค ์•„ํ‚คํ…์ณ๋Š” ์ƒˆ๋กœ์šด ์‹œ์žฅ์˜ ์š”๊ตฌ๊ฐ€ ๋‹ฌ๋ผ ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์— ๋ฐ˜์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ๋„ ๋”๋Ÿฌ ์žˆ๋‹ค. ์†๋„๋ฅผ ์–ป๋˜ ๋ณด์•ˆ์„ฑ๊ณผ ํ‘œ์ค€ํ™”๋ฅผ ๋†“์„ ๊ฒƒ์ธ๊ฐ€ ๋ณด์•ˆ์„ฑ์™€ ํ‘œ์ค€ํ™”๋ฅผ ์–ป๋˜ ์†๋„์™€ ํŽธ๋ฆฌํ•จ์„ ๋†“์„ ๊ฒƒ์ธ๊ฐ€๋Š” ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ ๋˜ ์–ด๋–ค ๋ถ€๋ถ„์„ ์ค‘์‹ฌ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑด์ง€์— ์ดˆ์ฒจ์„ ๋งž์ถฐ์•ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.