๐ REST API๋ ๋ฌด์์ธ๊ฐ ๊ทธ๋ฆฌ๊ณ SOAP, Modbus์์ ๋น๊ต
โ 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๊ฐ ๋ง๋ฅ์ ์๋๋ฉฐ, ๊ฐ ๋ฐฉ์์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ ํ๋์ด์ผ ํฉ๋๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ