[Web] Dropbox / Adobe Photoshop API๋ก ์ด๋ฏธ์ง ๋ฐฐ๊ฒฝ ์ง์ฐ๊ธฐ
๊ฐ๋ฐ ๋ฒ์ธ ๊ธ์ ์์ฑํ๋ ๊ฑด ์ง๊ทนํ ์ค๋๋ง์ธ ๊ฑฐ ๊ฐ๋ค์.
์ด๋ฒ ํฌ์คํธ์์๋ ํ์ฌ Beta๋ก ์ ๊ณต๋๊ณ ์๋ Adobe Photoshop API๋ฅผ ์ด์ฉํด์ ์ด๋ฏธ์ง์ ๋ฐฐ๊ฒฝ์ ์ง์ฐ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Adobe Photoshop API
https://github.com/AdobeDocs/photoshop-api-docs
Adobe API๋ ํ์ฌ ๊ณต๊ฐ ๋ฒ ํ์ ๋น๊ณต๊ฐ ๋ฒ ํ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์งํ ์ค์ ์์ผ๋ฉฐ Photostop API์ ๊ฒฝ์ฐ ๊ณต๊ฐ ๋ฒ ํ๋ก ์งํ๋์ด ์ผ๋ฐ ์ ์ ๋ค๋ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต๋์ด ์์ต๋๋ค. smartObject ๋ฑ 5๊ฐ์ง API๋ฅผ ํ์ฌ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๊ทธ ์ค์์๋ cutout์ ์ด๋ฏธ์ง ๋ฐฐ๊ฒฝ์ ์ง์์ฃผ๋ ์์ฃผ ์ ์ฉํ API์ ๋๋ค.
ํ์ฌ๋ ๋ฒ ํ ์๋น์ค๋ก ์ ๊ณต๋์ด ์์ด ๋ฌด๋ฃ๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ 5,000๋ฒ ํ์๋ฅผ ์ ๊ณตํฉ๋๋ค. (์คํจ ํฌํจ)
How to use
๋ฐ๋ก ๋ณธ๋ก ์ผ๋ก๊ฐ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ API ์ฌ์ฉ์ ์ํด Adobe ๊ณ์ ๊ณผ Dropbox ๊ณ์ ๋ ๊ฐ์ง๊ฐ ํ์ํ๋ฉฐ Dropbox ๊ณ์ ์ด ์๋ค๋ฉด AWS์ S3๋ฅผ ์ฌ์ฉํ์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
- Adobe ๊ณ์
- Dropbox or AWS S3
Adobe ๊ณ์ ์ API ์ฌ์ฉ์ ์ํ KEY ๋ฐ๊ธ๊ณผ Client ID ๋ฐ๊ธ์ ์ํด ์ฌ์ฉํ๋ฉฐ Dropbox ํน์ S3๋ ์ด๋ฏธ์ง๊ฐ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณด๊ดํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ์์๋ ๋จผ์ Adobe ๊ณ์ ์ ๊ฐ์ ํ๊ณ , ๋ก๊ทธ์ธ ํ ๋ค์ API๋ฅผ ๋ฐ๊ณ ๋ ํ, Dropbox ๊ณ์ ์ ๋ง๋ค๊ณ , Dropbox์ API๋ฅผ ์ด์ฉํ์ฌ ์ ๋ก๋ ์ฃผ์๋ฅผ ๋์ง๋ ๋ฐฉ์์ผ๋ก ์งํํฉ๋๋ค.
Adobe Developer API ์์ฑ
Adobe ๊ณ์ ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์๋ตํ๊ฒ ์ต๋๋ค.
Adobe I/O ํํ์ด์ง์์ ๋ก๊ทธ์ธ์ ์งํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ์๋ก ๋ค์ด๊ฐ๋ฉด ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์๋ ๋ถ๋ถ์ด ๋ํ๋ฉ๋๋ค.
์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค์ API๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Create new project ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
๊ทธ๋ฐ ๋ค์ Add an API๋ฅผ ํด๋ฆญํด Adobe Photoshop API๋ฅผ ์ ํํ ๋ค์ Next๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋ก์ด ํค๋ฅผ ๋ง๋ญ๋๋ค. ์ด ํค๋ ์ฌ๋ฌ๋ถ๋ค์ด API ํธ์ถํ ๋ ๋ฃ๋ ํค๋ก ๋ถ์คํ๋ฉด ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ ํค๋ฅผ ๋ง๋ค๊ณ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ ๊ณณ์ ๋ณด๊ดํด์ฃผ์ธ์.
ํค ์์ฑ์ด ์๋ฃ๋์๋ค๋ฉด ์ด๋ ๊ฒ keypair generated and downloaded ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. save ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋๊ฐ๋๋ก ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ํ๋ก์ ํธ๊ฐ ๋ง๋ค์ด์ง๊ณ , API ์์ฑ์ด ์๋ฃ๋ฉ๋๋ค.
API ์ฌ์ฉ์ ์ํ Access Token ๋ฐ๊ธ
API ์ฌ์ฉ์ ์ํด ์๊น ๋ค์ด๋ก๋ ๋ฐ์ ๊ณต๊ฐ/๊ฐ์ธํค(config.zip) ํ์ผ์ ์์ถ์ ํ์ด์ค๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋์ ๋ ๊ฐ์ง ํ์ผ์ด ์๊น๋๋ค.
- certificate_pub.crt
- private.key
์ด ๋ ํ์ผ์ ์ฌ๋ฌ๋ถ๋ค์ด Adobe API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ์ธ์ ๋ณด์ด๋ฉฐ ํ์ธ์๊ฒ ๋์ถ๋์ด์๋ ์๋ฉ๋๋ค. ํ์ฌ๋ ๋ฒ ํ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ์ ํ๋์๋ง ์ํฅ์ด ๋๋ฏ๋ก ํฐ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ฐจํ ๊ฒฐ์ ํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์ฌ๋์ด ๋ฌด๋จ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ํ์ฑ์ด ๋ด์ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์์ ํ๊ณ ์ฐพ๊ธฐ ์ฌ์ด ๊ณณ์ ๋ณด๊ดํด์ฃผ์ธ์.
API ์ฌ์ฉ์ ์ํด Access Token์ ๋ง๋ค์ด์ค๋๋ค. Access Token์ API ํธ์ถ์ ๋๊ฐ ์ฌ์ฉํ๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ํธํ ๊ฐ์ ๋๋ค.
Generate access token์ ์์์ ๋ค์ด๋ก๋ ๋ฐ์ private.key(๊ฐ์ธํค)์ ํ์ผ ๋ด์ฉ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ณ , Generate Token ๋ฒํผ์ ํด๋ฆญํด์ค๋๋ค.
์์ ๊ฐ์ด Access Token์ด ๋ง๋ค์ด์ก๋ค๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์งํ๋ ๊ฒ์ ๋๋ค.
Dropbox
์ด๋ฒ์๋ Adobe API์์ ์ฒ๋ฆฌ๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Dropbox API๋ฅผ ์ด์ฉํ์ฌ ์ ๋ก๋ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ด ํํธ ์ญ์ Dropbox ๊ณ์ ์์ฑ์ ๋ํ ๋ด์ฉ์ ์๋ตํ๊ฒ ์ต๋๋ค.
๋จผ์ ๊ฒฐ๊ณผ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํ ํด๋๋ฅผ ์๋ก ๋ง๋ค์ด์ค๋๋ค.
https://dropbox.github.io/dropbox-api-v2-explorer/#files_get_temporary_upload_link
Dropbox์์๋ API Explorer๋ฅผ ์ ๊ณตํ์ฌ Dropbox์์ ์ ๊ณตํ๋ API๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์น ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ผ์ ์ ๋ก๋ ํ ์ ์๋ ๋งํฌ๋ฅผ ๋ง๋๋ ๋ฐ ์์ฃผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋จผ์ Dropbox API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด Access Token์ ๋ฐ์ต๋๋ค. Get Token ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ฐ์ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์, ์๊น ๋ง๋ ํด๋ ์ด๋ฆ์ ๊ฒฝ๋ก๋ฅผ path์ ๋ฃ๊ณ ๋ค์ ํ์ผ ์ด๋ฆ์ผ๋ก cutout.png๋ฅผ ๋ฃ์ด์ค๋๋ค. ์๋ฅผ ๋ค๋ฉด,
/tistory/cutout.png
์์ ๊ฐ์ ํํ๋ก ๋ฃ์ด์ค ๋ค์, Submit Call ํ๋ฉด ์ ๋ก๋ ํ ์ ์๋ ๋งํฌ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
Image Cutout
์ด์ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. Adobe API ์ฌ์ฉ ์ค๋น๋ ๋์๊ณ , ๊ฒฐ๊ณผ๋ฌผ์ ์ ๋ก๋ํ ๋งํฌ๋ ๋ง๋ จํด๋์์ผ๋, ์ด์ ๋ฐฐ๊ฒฝ์ ์ง์ธ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ณ , API๋ฅผ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ ๋ฐ๋ก ์ด ๊ฐ์์ง ์ด๋ฏธ์ง์ ๋๋ค. ์ด ์ด๋ฏธ์ง๋ ์ค์ Photoshop API ๊ณต์ ๋ฌธ์์ ์ ๊ณต๋์ด ์๋ ์ด๋ฏธ์ง์ด๋ฉฐ ์ด ์ธ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ, ๋ฐ๋์ ์น์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ ๋ฐ๋์ Dropbox ๋ฑ์ ์ ๋ก๋ ํ์ ํ ๊ณต๊ฐ ๋งํฌ๋ฅผ ์ค์ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
๋ค์์ผ๋ก๋ API ํธ์ถ์ธ๋ฐ์. API๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์๋ curl, wget ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ์ง๋ง ๋ช ๋ น์ด ์ฌ์ฉ์ด ์ต์ํ์ง ์์ผ์ ๋ถ๋ค์ผ๋ฉด ์๋์ ๋ ๊ฐ์ง ์ํํธ์จ์ด๋ฅผ ์ด์ฉํด ๋ณผ ์ ๋ ์์ต๋๋ค.
- Postman
- Insomnia
์ด ํฌ์คํธ์์๋ Insomnia ํ๋ก๊ทธ๋จ์ ์ด์ฉํ์ฌ Adobe API๋ฅผ ํธ์ถํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
https://insomnia.rest/download
Insomnia๋ ์ ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์์ต๋๋ค.
์ค์น๊ฐ ๋๋ฌ๋ค๋ฉด ์ข์ธก ์๋จ์์ New Request๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ฆ์ ์ง์ ํ๊ณ ๋ฉ์๋๋ฅผ GET -> POST๋ก ๋ณ๊ฒฝํ๊ณ No body -> JSON์ผ๋ก ๋ณ๊ฒฝํ ๋ค์ Create ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
{
"input": {
"storage": "external",
"href": "${์ค์ ์ด๋ฏธ์ง๊ฐ ๋ณด์ด๋ ์ฃผ์}"
},
"output": {
"storage": "dropbox",
"href": "${Dropbox์์ ๋ฐ์ ๋งํฌ ์ฃผ์}"
}
}
JSON ๋ฐ์ชฝ์ ์์ ๊ฐ์ ๋ด์ฉ์ ์ ์ด์ค๋๋ค. (output์ ๋ฐ๋์ dropbox๋ก ์ ๋๋ก ํฉ๋๋ค.)
์ด์ ์์์ ๋ฐ๊ธ ๋ฐ์ Access Token์ ๋ฃ์ด์ค์ผ ํฉ๋๋ค. Auth ๋ฒํผ์ ํด๋ฆญํ ํ, Bearer Token์ ํด๋ฆญํฉ๋๋ค.
TOKEN ๋์ Access Token์ ๋ฃ์ด์ฃผ๊ณ ๋ฐ๋์ ENABLED์ ์ฒดํฌ ๋ฐ์ค๋ฅผ ํ์ํด์ค๋๋ค.
๋ง์ง๋ง์ผ๋ก Header์ ๊ฐ์ x-api-key๋ฅผ ์ ๋ ฅํ๊ณ value์๋ ์๊น Access Token์ ๋ฐ๊ธ ๋ฐ์ ํ๋ฉด์์ ์กฐ๊ธ๋ง ๋ด๋ฆฌ์๋ฉด Client ID ๊ฐ์ด ์์ต๋๋ค. ๊ทธ ๊ฐ์ value์ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก Send ๋ฒํผ์ ํด๋ฆญํด์ API๋ฅผ ํธ์ถํ๋ฉด ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ด 202 Accepted๊ฐ ๋ํ๋๋ฉด ์ฑ๊ณต์ ๋๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ cutout.png ํ์ผ์ด ๋ํ๋ฉ๋๋ค.
๋๋ฌ๋ณด๋ฉด ์ด๋ ๊ฒ ๋ฐฐ๊ฒฝ์ด ๊น๋ํ๊ฒ ์์ด์ก์์ ์ ์ ์์ต๋๋ค.
202 Accepted๋ ์ ๋ํ๋ฌ์ผ๋ ํ์ผ์ด ๋ง๋ค์ด์ง์ง ์์ ๊ฒฝ์ฐ..
๊ธฐ๋ณธ์ ์ผ๋ก Key๋ ํ์ผ ๊ฒฝ๋ก๊ฐ ์๋ชป๋์์ ๊ฒฝ์ฐ 400 Bad Request๊ฐ ๋ํ๋์ง๋ง 202 Accepted๊ฐ ๋ํ๋ฌ์์๋ ๋ถ๊ตฌํ๊ณ ํ์ผ์ด ๋ง๋ค์ด์ง์ง ์์ ๊ฒฝ์ฐ๋ 202 Accepted ์ํ์ ๊ฐ์ด ๋ฐ์ link-self-href ์ฃผ์๋ฅผ ์คํํ์ฌ ์งํ ์ํฉ์ ๋ณผ ์ ์์ต๋๋ค.
์ด ์ฃผ์๋ฅผ ํธ์ถํ ๋๋ ์์์ ์งํํ๋ Access Token๊ณผ x-api-key๋ฅผ ๋๊ฐ์ด ๋ฃ์ด์ค์ผ ํ๋ฉฐ ๋ฃ์ง ์์ ๊ฒฝ์ฐ 400 Bad Request๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ ๋ ฅ ํ ์งํํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ์ ๋์๋ค๋ฉด status๊ฐ succeeded๋ก ํ์๋๋ฉฐ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ failed๋ก ํ์๋ฉ๋๋ค.
๋ง์น๋ฉฐ...
๋ง์ ์ ์ด๋ณด๋ ๊ฐ๋ฐ ๊ธ๋ณด๋ค ํจ์ฌ ๊ธด ๊ธ์ธ๊ฑฐ ๊ฐ๋ค์. API ํธ์ถํ๋ ๊ฒ ํฐ ์ผ์ ์๋์ง๋ง ํ๋ํ๋ ์ผ์ผ์ด ์ ์ด๋์๊ฐ๋ ๊ณผ์ ์ ํ์ ์์ฑํ๋ ๊ฐ๋ฐ ๊ธ๋ณด๋ค ๋ ๊ธด ์๊ฐ์ด ์๋ชจ๋๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
Adobe Photoshop API๋ ํ์ ์์ฃผ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง ์์ ์ API ํธ์ถ๋ง์ ์ด์ฉํด ํ ๋ฒ์ ์์ ํ ์ ์๋๋ก ํด์ค์ผ๋ก์จ ๊ต์ฅํ ํธ๋ฆฌํจ์ ๋๊ผ๊ณ , ํนํ ์ด๋ฏธ์ง ๋ฅ๋ฌ๋์ ํ์๋ ๋ถ๋ค๊ป์ ์์ฃผ ์ฌ์ฉํ๋ ์ ์ฒ๋ฆฌ ์ค์์๋ ๋ณต์กํ ์์ ์ด ์๊ตฌ๋๋ ์ ์ฒ๋ฆฌ์ ์์ด์ ๊ต์ฅํ ์ ์ฉํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
๋ค๋ง ์ Cutout API๋ 100% ์๋ฒฝํ์ง๋ง์ ์์ต๋๋ค. ์ผ๋ถ ์ฌ๋ ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํ์์ ๋ ๋ฏธ์ธํ ์๊น๋ค์ ๋ฐฐ๊ฒฝ์์ ๋ฒ์ด๋์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์๊ณ , ์๊ฒฝ์ ์ด ์ฌ๋์ ๊ฒฝ์ฐ ์๊ฒฝํ ๊น์ง ์ญ์ ๋๋ ์ด๋ง๋ฌด์ํ ํ์์ด ์์ด, ๋ฏธ์ธํ ๋ฐฐ๊ฒฝ์ ์ ๊ฑฐํ๋ ๋ฐ ์์ด์๋ ์กฐ๊ธ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
'Programming > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] HTML ๋ง๊ณ HTMX(HyperText Markup eXtension) (0) | 2023.12.03 |
---|---|
์์ ์ Tistory ๋ธ๋ก๊ทธ ๊ฒ์์ ์์ฑ ์ธ์ ๊ธฐ๋ฅ์ ๋ฃ์ด๋ณด์. (1) | 2017.07.13 |
Google Web Designer 1.0 Beta (0) | 2013.10.02 |