๊ฐ์
api ํธ์ถ ์๋ฅผ ํธ๋ํนํ๊ธฐ ์ํด airbridge๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ๋ณธ๋ airbridge๋ ๊ด๊ณ ์ฑ๊ณผ ๋ถ์์ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ ํด์ด์ง๋ง ์ด๋ฒคํธ๋ฅผ ์์ด๋ธ๋ฆฟ์ง ์๋ฒ๋ก ๋ณด๋ด๊ณ ์ด๋ฅผ ์ฝ๊ฒ ์กฐํํ๊ณ ํํฐ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
api ํธ์ถ ์๋ฅผ ํธ๋ํนํ๊ธฐ ์ํ ๋ฐฉ์์ ์ฐพ๋ ์ค ์์ด๋ธ๋ฆฟ์ง๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ธฐ์ ์ด๋ฐ ๋ฐฉ๋ฒ๋ ์๋ค๋ ๊ฒ์ ์๋ฆฌ์๋ ์ทจ์ง๋ก ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
์ฌ์ ์ค๋น
๋จผ์ ์์ด๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ ๊ฐ๋จํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
- ์์ด๋ธ๋ฆฟ์ง ํ์๊ฐ์
- ์ฑ ๋ฑ๋ก
์์ด๋ธ๋ฆฟ์ง๋ ์๋ ํ์ด์ง์์ ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ๋ง์ผ๋ก ๊ฐํธํ๊ฒ ํ์๊ฐ์ ํ ์ ์์ต๋๋ค.
์ดํ ์๋์ ๊ฐ์ ํ๋ฉด์์ ์ฑ์ ๋ฑ๋กํ๋ฉด ๋ฉ๋๋ค.
์ ๋ website๋ฅผ ๊ณ ๋ฅด๊ณ ์๋น์ค๋ฅผ ์๊ฐํ๋ ๊ฐ๋จํ ์นํ์ด์ง URL์ ์ ๋ ฅํ๋๋ฐ, ๋จ์ํ api ํธ์ถ ์๋ฅผ ํธ๋ํน ํ๋ ๋ชฉ์ ์ ์ํด์๋ฉด ๊ผญ ์ฌ๋ฐ๋ฅธ ์นํ์ด์ง๋ฅผ ๋ฃ์ง ์์๋ ๋ฉ๋๋ค. ์ด์ฐจํผ ์์ด๋ธ๋ฆฟ์ง์์ ์ ๊ณตํ๋ api๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์์ด๋ธ๋ฆฟ์ง์์ ๋ชจ๋ํฐ๋ง ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ง์ผ sdk๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์๋น์ค ๋ด ๊ด๊ณ ์ฑ๊ณผ ํธ๋ํน ๋ฑ ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ค์ ๋์ํ๋ ์ฑ/URL๋ฅผ ๋ฃ์ด์ฃผ์ ์ผ ํฉ๋๋ค.
์ฑ์ ๋ฑ๋กํ๊ณ ๋๋ฉด ์๋์ ๊ฐ์ด ๋ฑ๋กํ ์ฑ ๋ชฉ๋ก์ ํ์ธํ ์ ์๊ฒ ๋ฉ๋๋ค.
Api ํธ์ถ ์ ํธ๋ํนํ๊ธฐ
์ด์ ์์ด๋ธ๋ฆฟ์ง์ Server To Server Event Api๋ฅผ ํ์ฉํด ์์ด๋ธ๋ฆฟ์ง ์๋ฒ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์กํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ํด๋น api์ docs๋ ์๋ ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฑ ์ด๋ฆ์ ํด๋ฆญํด ์ค์ ์ฑ ๋์๋ณด๋๋ก ์ด๋ํ ๋ค Settings-Tokens์์ API ํ ํฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด๋ก๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด header์ APIํ ํฐ์, ๋งํฌ์ appName์ ๋ฃ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ docs์ ์์๋ก ์ฃผ์ด์ง payload๋ฅผ ์ด์ฉํด ํ์ ์์๊ฐ ์๋๊ฒ๋ค์ ์ง์ ์๋์ ๊ฐ์ด ๋จ์ํํ์์ต๋๋ค. ClientId์ ShortId๋ ์์๋ก ์ฃผ์ด์ง payload์ ์๋ ๊ฐ์ ๊ทธ๋๋ก ํ์ฉํ์ต๋๋ค.
๋ Label์ ์ดํ ์ด๋ฒคํธ๋ฅผ ๊ทธ๋ฃนํ ํ ๋ ์ฌ์ฉ๋๋ ๊ฐ๋ฐํ๊ฒฝ๋ณ๋ก ๋ค๋ฅด๊ฒ ์ค์ ํ์์ต๋๋ค. (dev, prod ๋ฑ)
const body = {
eventTimestamp: Date.now(),
browser: {
clientID: '05609013-bb5a-4594-bbc3-832cb1b87072',
},
eventData: {
shortID: "aef04",
goal: {
category,
label: config.airbridgeLabel, //(dev, prod ๋ฑ)
},
},
};
์ ๋ ์นดํ ๊ณ ๋ฆฌ์ ์ด๋ฒคํธ ์ด๋ฆ์ ๋ฃ์์ต๋๋ค. (signUp, login ๋ฑ) ์ดํ ์๋์ ๊ฐ์ด ๋ชจ๋ํํ์ฌ ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์ ์กํ ์ ์๋๋ก ํ์์ต๋๋ค.
const sendApiEvent = async (category: string) => {
const body = {
eventTimestamp: Date.now(),
browser: {
clientID: '05609013-bb5a-4594-bbc3-832cb1b87072',
},
eventData: {
shortID: "aef04",
goal: {
category,
label: config.airbridgeLabel, //(dev, prod ๋ฑ)
},
},
};
const head = {
headers: { Authorization: `Bearer ${config.airbridgeToken}` },
};
try {
const result = await axios.post(
`https://api.airbridge.io/events/v1/apps/${config.airbridgeAppName}/web/9320`,
body,
head,
);
return result;
} catch (error) {
throw error
}
};
์ด๋ ๊ฒ ํด์ ์ ์ก๋ ์ด๋ฒคํธ๋ค์ ๋์๋ณด๋์ Reports-Actuals์์ ์กฐํํ ์ ์์ต๋๋ค. ์๋ ์ฌ์ง์์๋ ๋ฉํธ๋ฆญ์์ WEB2_NFT_CREATE์ ๊ฐ์ ๊ฒ๋ค์ด ๋ฏธ๋ฆฌ ์ง์ ํ ์ด๋ฒคํธ ์ด๋ฆ๋ค์ ๋๋ค. ๋ค๋ง ์ฒ์์ผ๋ก ๋ณด๋ด๋ ์ด๋ฒคํธ๋ ๋ฐ์๋๊ธฐ๊น์ง 5-10๋ถ ์ ๋, ์ด๋ฏธ ๋ณด๋ธ ์ ์๋ api์ ํธ์ถ ์๊ฐ ์ฆ๊ฐํ๊ธฐ ๊น์ง๋ ์ฝ 30์ด์ ๋๊ฐ ์์๋๋ ๋ฏ ํฉ๋๋ค.
๊ทธ๋ฃน ๋ฐ์ด์์ Event Label๋ฅผ ํด๋ฆญํ๋ฉด ์ด๋ฒคํธ ๋ผ๋ฒจ๋ณ๋ก ์ด๋ฒคํธ ํ์๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
'WEB > Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ๋ง๋ถํธ ์ ๋ฌธ] 2. ์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด (0) | 2024.04.25 |
---|---|
[์คํ๋ง๋ถํธ ์ ๋ฌธ] 1. ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ (0) | 2024.04.25 |
[Docker] mysql ์ปจํ ์ด๋์ iterm์ผ๋ก ์ ์ํ๊ธฐ (0) | 2023.05.07 |
GithubAction์ ์ด์ฉํ CD (feat: appleboy/ssh-actions@master) (0) | 2023.04.26 |
[AWS RDS] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถํ๊ณ ํ์์กด/์ธ์ฝ๋ฉ ์ค์ ํ๊ธฐ (0) | 2022.04.29 |
๋๊ธ