- Data Structure
- SSL
- DATABASE
- spring ์์ ๋ก๊ทธ์ธ
- MAKE US
- java error
- GIT
- spring ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- Java
- ๋ฆฌ๋ ์ค ๋ช ๋ น์ด
- MethodArgumentNotValidException
- C++
- docker
- mysql
- ์์คํ ์ํํธ์จ์ด
- ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- Unity
- RP 2๊ธฐ
- ํจ์คํธ์บ ํผ์คX์ผ๋์
- Quick Sort
- @CreatedDate
- Spring
- OpenAPI
- spring์ผ๋ก https ์ ์ฉ
- merge sort
- SQL
- Rp2๊ธฐ
- aligoapi
- datagrip
- node js
YS's develop story
์๋ฆฌ๊ณ ์นด์นด์ค ์๋ฆผํก API ์ฐ๋ํ๊ธฐ (with Node js) ๋ณธ๋ฌธ
๐จ๐ผ๐ป ์๋ฆฌ๊ณ ์นด์นด์ค ์๋ฆผํก API ์ฐ๋ํ๊ธฐ (with Node js)
โ Problem
ํน์ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ์ ๋ ํน์ ์ ์ ์๊ฒ ์นด์นด์ค ์๋ฆผํก์ ์ด๋ป๊ฒ ๋ณด๋ผ ์ ์์ ๊น์? ๐
์๋ฆฌ๊ณ ์๋น์ค๋ฅผ ํ์ฉํด์ Node js๋ก ์ด๋ฅผ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
๐ Solution
์นด์นด์ค ์๋ฆผํก์ ๋ณด๋ด๊ธฐ ์ํด์๋ ์์ ๊ฐ์ ์ฌ์ดํธ์ ๊ฐ์ ์ ํด์ผ ํฉ๋๋ค.
์๋ฆผํก์ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ ๊ฑด๋น 6์ ์ ๋๊ฐ ๋ฐ์ํ๋ ์ ๋ฃ ์๋น์ค์ ๋๋ค.
์๋ฆผํก์ ๋ณด๋ด๊ธฐ ์ํด์๋ ์นด์นด์ค ์ฑ๋์ด ๋ฑ๋ก๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ํ ์๋ฆผํก์ ๋ณด๋ด๊ธฐ ์ํด์๋ ํ ํ๋ฆฟ์ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ์ผ ํฉ๋๋ค.
ํ ํ๋ฆฟ์ ๋ชจ๋ ์นด์นด์ค์์ ๊ฒ์ํ์ฌ ์น์ธ ์ฌ๋ถ๋ฅผ ํ๋ณํ๊ฒ ๋ฉ๋๋ค.
์ ์ฌ์ง๊ณผ ๊ฐ์ด ๊ฒ์๋ฅผ ํตํด ํ ํ๋ฆฟ์ด ์น์ธ ์๋ฃ๊ฐ ๋๋ค๋ฉด,
์ด์ ์นด์นด์ค ์๋ฆผํก ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
์ฌ์ดํธ์์ API Key์ ๋ฐ์กํ ์๋ฒ์ IP๋ฅผ ๋ฑ๋ก ํด ์ค์๋ค.
์ด์ API ํธ์ถ์ ์ํ API ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค.
body๊ฐ์ผ๋ก apikey์ ์ฌ์ฉ์ ์์ด๋๋ฅผ ์
๋ ฅํ๋ฉด API ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค.
(์ฐธ๊ณ ๋ก ์ ๋ ํ
์คํธ๋ฅผ ํ๊ธฐ ์ํด ์ PC์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ง๋ง ์ค์ ์๋น์ค์์
ํ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ PC์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ผ ํฉ๋๋ค.)
Postman์ ํ์ฉํ์ฌ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ต๋๋ค.
์ ๋ชจ๋์ ํ์ฉํ์ฌ ์ข ๋ ์ฝ๊ฒ ์๋ฆผ ํก ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํด๋น ๋ชจ๋์ ํ์ฉํ์ฌ ์๋ฆผํก ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
npm i aligoapi
์ ๋ช ๋ น์ผ๋ก ๋ชจ๋์ ์ค์นํด ์ค์๋ค.
let AuthData = {
apikey: '<apikey>',
// ์ด๊ณณ์ ๋ฐ๊ธ๋ฐ์ผ์ api key๋ฅผ ์
๋ ฅํ์ธ์
userid: '<userid>',
// ์ด๊ณณ์ userid๋ฅผ ์
๋ ฅํ์ธ์
// token: ''
// ์ด๊ณณ์ token api๋ก ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ์
๋ ฅํ์ธ์
}
// token์ ์ ์ธํ ์ธ์ฆ์ฉ ๋ฐ์ดํฐ๋ ๋ชจ๋ API ํธ์ถ์ ํ์๊ฐ์
๋๋ค.
// token์ ํ ํฐ์์ฑ์ ์ ์ธํ ๋ชจ๋ API ํธ์ถ์ ํ์๊ฐ์
๋๋ค.
const alimtalkSend = (req, res) => {
req.body = {
senderkey: ๋ฐ์ ํ๋กํ ํค
tpl_code: ํ
ํ๋ฆฟ ์ฝ๋
sender: ๋ฐ์ ์ ์ฐ๋ฝ์ฒ
receiver_1: ์์ ์ ์ฐ๋ฝ์ฒ
subject_1: ์๋ฆผํก ์ ๋ชฉ
message_1: ์๋ฆผํก ๋ด์ฉ
}
// senddate: ์์ฝ์ผ // YYYYMMDDHHMMSS
// recvname: ์์ ์ ์ด๋ฆ
// button: ๋ฒํผ ์ ๋ณด // JSON string
// failover: ์คํจ์ ๋์ฒด๋ฌธ์ ์ ์ก๊ธฐ๋ฅ // Y or N
// fsubject: ์คํจ์ ๋์ฒด๋ฌธ์ ์ ๋ชฉ
// fmessage: ์คํจ์ ๋์ฒด๋ฌธ์ ๋ด์ฉ
// }
// req.body ์์ฒญ๊ฐ ์์์
๋๋ค.
// _๋ก ๋๋ฒ๋ง๋ ์ต๋ 500๊ฐ์ receiver, subject, message, button, fsubject, fmessage ๊ฐ์ ๋ณด๋ด์ค ์ ์์ต๋๋ค
// failover๊ฐ์ด Y์ผ๋ fsubject์ fmessage๊ฐ์ ํ์์
๋๋ค.
aligoapi.alimtalkSend(req, AuthData)
.then((r) => {
res.send(r)
})
.catch((e) => {
res.send(e)
})
}
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด ์ค๋๋ค.
์ด๋ ์๋ฆผํก ๋ด์ฉ์ ํ ํ๋ฆฟ์ ๋ด์ฉ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
ํ ํ๋ฆฟ์ ๋ณ์ ๋ถ๋ถ๋ค์ ex : #{์์ผ}, #{๊ฒฐ์ ๊ธ์ก}....
์ํ๋ ๊ฐ์ผ๋ก ๋ฐ๊พธ์ด ์ค์๋ค.
ํน์ API ์คํ ์ ์ ์ฝ๋๊ฐ ์คํ๋๋๋ก ํ๋ค๋ฉด
receiver์ ๋ฑ๋ก๋ ๋ฒํธ๋ก ์๋ฆผ ํก์ด ์๋ ๋ฐ์ก๋ฉ๋๋ค.
์์ฝ ์๋ฃ ์ ์์ฝ ์๋ฆผ ํก์ ๋ณด๋ด๊ฑฐ๋
๋ฐฐ์ก ์ค๋น ์๋ฃ ์ ์ถ๋ฐ ์๋ฆผ ํก์ ๋ณด๋ด๋ ๋ฑ
API๋ฅผ ์ค๊ณํ ๋ ํ์ฉํ ์ ์๊ฒ ๋ค์