๐ŸŒ REST API๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๊ทธ๋ฆฌ๊ณ  SOAP, Modbus์™€์˜ ๋น„๊ต

์—…๋ฐ์ดํŠธ:
1 ๋ถ„ ์†Œ์š”

โœ… REST๋ž€?

REST(Representational State Transfer)๋ž€ ์ž์›์˜ ํ‘œํ˜„์„ ์ด์šฉํ•ด ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

  • ์ž์›(Resource): ์„œ๋ฒ„๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ (์˜ˆ: user, order, product)
  • ํ‘œํ˜„(Representation): ์ž์›์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹ (๋ณดํ†ต JSON, XML)
  • ์ „์†ก(Transfer): HTTP๋ฅผ ํ†ตํ•ด ์ƒํƒœ ๋ณ€ํ™” ์ •๋ณด ์ „์†ก

๐Ÿงช REST์˜ ๋™์ž‘ ๋ฐฉ์‹

๊ตฌ์„ฑ ์š”์†Œ ์—ญํ• 
URI ์ž์›์„ ์‹๋ณ„ (/orders/1)
HTTP METHOD ํ–‰์œ„๋ฅผ ํ‘œํ˜„ (GET, POST, PUT, DELETE)
JSON ๋ฉ”์‹œ์ง€ ํฌ๋งท (์š”์ฒญ/์‘๋‹ต์— ์‚ฌ์šฉ)

๐ŸŽฏ REST API ์˜ˆ์‹œ

GET    /orders       โ†’ ์ฃผ๋ฌธ ๋ชฉ๋ก ์กฐํšŒ
GET    /orders/1     โ†’ ํŠน์ • ์ฃผ๋ฌธ ์กฐํšŒ
POST   /orders       โ†’ ์ฃผ๋ฌธ ์ƒ์„ฑ
PUT    /orders/1     โ†’ ์ฃผ๋ฌธ ์ˆ˜์ •
DELETE /orders/1     โ†’ ์ฃผ๋ฌธ ์‚ญ์ œ

โš–๏ธ REST์˜ ์žฅ๋‹จ์ 

โœ… ์žฅ์ 

  • ๐ŸŒ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ: ๋ธŒ๋ผ์šฐ์ €, ์•ฑ, ์„œ๋ฒ„ ๋“ฑ ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๐Ÿ”— HTTP ๊ธฐ๋ฐ˜: ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ โ†’ ํ…Œ์ŠคํŠธ์™€ ์—ฐ๋™ ์šฉ์ด (CURL, Postman)
  • ๐ŸŽฏ ์ž์› ์ค‘์‹ฌ ์„ค๊ณ„: URI๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„
  • ๐Ÿ”„ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์šฐ์ˆ˜: JSON์€ ์ž๊ธฐ์„œ์ˆ ์  ๊ตฌ์กฐ

โŒ ๋‹จ์ 

  • โ›“ ๋ณต์žกํ•œ ์š”์ฒญ ๊ตฌ์„ฑ ์–ด๋ ค์›€: 1 ์š”์ฒญ์— ์—ฌ๋Ÿฌ ์ž์› ๋™์‹œ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€
  • ๐Ÿ”‚ ์˜ค๋ฒ„ํŽ˜์น˜/์–ธ๋”ํŽ˜์น˜ ๋ฌธ์ œ: ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ์–ด๋ ค์›€
  • ๐Ÿงฑ ๋ฉ”์‹œ์ง€ ์˜ค๋ฒ„ํ—ค๋“œ: JSON์€ ๊ฐ€๋ณ์ง€๋งŒ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ผ ๋ฌด๊ฑฐ์šธ ์ˆ˜ ์žˆ์Œ

๐Ÿ“ฆ ๋‹ค๋ฅธ API/ํ†ต์‹  ๋ฐฉ์‹๋“ค๊ณผ์˜ ๋น„๊ต

๐Ÿงผ SOAP (Simple Object Access Protocol)

  • XML ๊ธฐ๋ฐ˜์˜ ์—„๊ฒฉํ•œ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ
  • HTTP ์™ธ์—๋„ SMTP, FTP ๋“ฑ ๋‹ค์–‘ํ•œ ์ „์†ก ๊ฐ€๋Šฅ
  • ๊ณ„์•ฝ ๊ธฐ๋ฐ˜ (WSDL ์‚ฌ์šฉ)
  • โœ… ์žฅ์ : ๋ณด์•ˆ, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๊ฐ•๋ ฅ
  • โŒ ๋‹จ์ : ๋ณต์žกํ•จ, ๋ฌด๊ฒ๊ณ  ๋А๋ฆผ (XML ์‚ฌ์šฉ)

๐Ÿงช GraphQL

  • 1 ์š”์ฒญ์— ์—ฌ๋Ÿฌ ์ž์› ์š”์ฒญ ๊ฐ€๋Šฅ
  • ์›ํ•˜๋Š” ํ•„๋“œ๋งŒ ์„ ํƒํ•ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ โ†’ Overfetch ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๋‹จ์ผ Endpoint(/graphql)
  • โœ… ์žฅ์ : ํด๋ผ์ด์–ธํŠธ ๋งž์ถคํ˜• ์‘๋‹ต
  • โŒ ๋‹จ์ : ์บ์‹ฑ ์–ด๋ ต๊ณ  ํ•™์Šต ๋‚œ์ด๋„ ์žˆ์Œ

โš™๏ธ Modbus

  • ์‚ฐ์—… ์ œ์–ด ์‹œ์Šคํ…œ(PLC ๋“ฑ)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ง๋ ฌ/์ด๋”๋„ท ํ†ต์‹  ํ”„๋กœํ† ์ฝœ
  • ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›์Œ (์ฝ๊ธฐ/์“ฐ๊ธฐ)
  • ๋งค์šฐ ๊ฐ€๋ณ๊ณ  ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ
  • โœ… ์žฅ์ : ์ž„๋ฒ ๋””๋“œ/๊ณต์ • ์‹œ์Šคํ…œ์—์„œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ 
  • โŒ ๋‹จ์ : ๋ณด์•ˆ ์—†์Œ, REST์ฒ˜๋Ÿผ ๊ตฌ์กฐํ™”๋œ API ์•„๋‹˜

๐Ÿ” ์š”์•ฝ ๋น„๊ตํ‘œ

ํ”„๋กœํ† ์ฝœ ์ „์†ก ๋ฐฉ์‹ ํฌ๋งท ์žฅ์  ๋‹จ์ 
REST HTTP JSON ๋‹จ์ˆœ, ํ‘œ์ค€ํ™” ๋ณต์žกํ•œ ์š”์ฒญ ์–ด๋ ต
SOAP HTTP, SMTP ๋“ฑ XML ๋ณด์•ˆ, ํŠธ๋žœ์žญ์…˜ ๋ฌด๊ฑฐ์›€, ๋ณต์žกํ•จ
GraphQL HTTP JSON ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์„ ํƒ ์บ์‹ฑ ์–ด๋ ค์›€
Modbus TCP/Serial ๋ฐ”์ด๋„ˆ๋ฆฌ ๋น ๋ฅด๊ณ  ๋‹จ์ˆœ ๋ณด์•ˆ ์ทจ์•ฝ, ๋ฒ”์šฉ ์•„๋‹˜

๐Ÿ“Œ ์‹ค๋ฌด์—์„œ ์„ ํƒ ๊ธฐ์ค€์€?

์ƒํ™ฉ ์ถ”์ฒœ ๋ฐฉ์‹
๊ฐ„๋‹จํ•œ CRUD + ๋ฒ”์šฉ API REST
์—„๊ฒฉํ•œ ๊ณ„์•ฝ, ๋ณด์•ˆ, ํŠธ๋žœ์žญ์…˜ SOAP
๋ชจ๋ฐ”์ผ/ํ”„๋ก ํŠธ์—์„œ ์š”์ฒญ ์ตœ์ ํ™” GraphQL
๊ณต์žฅ ์ž๋™ํ™”, IoT ์„ผ์„œ ํ†ต์‹  Modbus

๐Ÿง  ์ถ”๊ฐ€๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๊ฒƒ

  • REST๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ผ ๋ฟ, ํ‘œ์ค€์€ ์•„๋‹˜
  • RESTfulํ•˜์ง€ ์•Š์€ REST API๋„ ๋งŽ์Œ (ex: /getUserList)
  • REST๊ฐ€ ๋ถˆํŽธํ•  ๋• GraphQL์ด๋‚˜ gRPC๋„ ๊ณ ๋ ค

โœ… ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

REST๋Š” ์ง€๊ธˆ๋„ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” API ์„ค๊ณ„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ, ๋ชฉ์ ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ผ SOAP, GraphQL, gRPC, Modbus ๋“ฑ ๋‹ค์–‘ํ•œ ํ†ต์‹  ๋ฐฉ์‹์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

REST๊ฐ€ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋ฉฐ, ๊ฐ ๋ฐฉ์‹์€ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„ ํƒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


ํƒœ๊ทธ: , , , , , , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ