์†์„ฑ ๊ด€๋ฆฌ

์ด ํŽ˜์ด์ง€๋Š” Apigee ๋ฐ Apigee Hybrid์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

์†์„ฑ์„ ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด API ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ API๊ฐ€ ๊ณต๊ฐœ, ๋น„๊ณต๊ฐœ ๋˜๋Š” ๋‚ด๋ถ€ ์†Œ๋น„ ๋Œ€์ƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” Target Users๋ผ๋Š” ์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์€ ๊ทธ ์™ธ์—๋„ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์†Œ์Šค ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์†์„ฑ์ด ๋งŽ์„์ˆ˜๋ก ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ๋ฒ”์œ„๋ฅผ ์‰ฝ๊ฒŒ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปค์Šคํ…€ ์†์„ฑ์„ ๋งŒ๋“ค๊ณ  API ํ—ˆ๋ธŒ ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ํ—ˆ๋ธŒ์˜ ์†์„ฑ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ํ—ˆ๋ธŒ๋Š” ํ‚ค-๊ฐ’ ํ˜•์‹์œผ๋กœ ์†์„ฑ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‚ค๋Š” ์†์„ฑ์˜ ์ด๋ฆ„์ด๊ณ  ๊ฐ’์€ ์†์„ฑ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ์†์„ฑ์˜ ๊ฐ’์€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด
  • Enum
  • JSON

์‹œ์Šคํ…œ ์†์„ฑ

์‹œ์Šคํ…œ ์†์„ฑ์€ ๊ฐ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์— ๋Œ€ํ•ด API ํ—ˆ๋ธŒ์—์„œ ์‚ฌ์ „ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ ๋ชฉ๋ก๊ณผ ํ•ด๋‹น ๊ฐ’ ์ •์˜๋Š” API ํ—ˆ๋ธŒ์˜ ์ถœ์‹œ ๋ฒ„์ „๋ณ„๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์†์„ฑ์˜ ์˜ˆ์‹œ๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋‹จ๊ณ„, API ๊ทœ์ • ์ค€์ˆ˜, API ์ธ์ฆ, SLO ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ํ•„์ˆ˜ ๋˜๋Š” ์„ ํƒ์‚ฌํ•ญ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ์ด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ํ•„์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์†์„ฑ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Enum ์œ ํ˜• ์‹œ์Šคํ…œ ์†์„ฑ์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ ๋˜๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ - ๊ธฐ์กด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์†์„ฑ์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด oas-version ์†์„ฑ์€ ๊ฐ’์ด 2.1, 3.0, 3.1์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’์€ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ƒˆ ์ปค์Šคํ…€ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ - ๊ธฐ์กด ๊ฐ’์„ ์ถ”๊ฐ€, ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด lifecycle-stage ์†์„ฑ์€ ์ฒ˜์Œ์— Dev, Stage, UAT, Prod ๋“ฑ์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์กด ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ  ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์†์„ฑ ๋ณด๊ธฐ

Console

๋ชจ๋“  ์‹œ์Šคํ…œ ์†์„ฑ์„ ๋ณด๋ ค๋ฉด Google Cloud ์ฝ˜์†”์—์„œ API ํ—ˆ๋ธŒ > ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์†์„ฑ ํƒญ์—์„œ ๋ชจ๋“  ๊ธฐ์กด ์‹œ์Šคํ…œ ์†์„ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API

๋ฆฌ์†Œ์Šค์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ ์†์„ฑ์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ API์— GET ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/attributes

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ListAttributes๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์˜ ์‹œ์Šคํ…œ ์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-type: application/json" \
-X GET \
https://apihub.googleapis.com/v1/projects/test-project-1/locations/us-central1/attributes?filter=definition_type=SYSTEM_DEFINED

Enum ์œ ํ˜•์˜ ์‹œ์Šคํ…œ ์†์„ฑ ์ˆ˜์ •

๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๊ฐ’์— ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ ๊ฐ’ ์ถ”๊ฐ€
  • ๊ธฐ์กด ๊ฐ’ ์—…๋ฐ์ดํŠธ
  • ๊ธฐ์กด ์†์„ฑ ๊ฐ’ ์‚ญ์ œ

์ด ์„น์…˜์˜ ์˜ˆ์‹œ์—์„œ๋Š” Enum ์œ ํ˜•์˜ ์‹œ์Šคํ…œ ์†์„ฑ์— ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Console

์‹œ์Šคํ…œ ์†์„ฑ์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ API ํ—ˆ๋ธŒ > ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†์„ฑ ํƒญ์˜ ์‹œ์Šคํ…œ ์†์„ฑ ์„น์…˜์— ๋ชจ๋“  ๊ธฐ์กด ์‹œ์Šคํ…œ ์†์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์†์„ฑ์—์„œ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋ฉด ์†์„ฑ ์ˆ˜์ • ์ฐฝ์ด ์—ด๋ฆฌ๊ณ  ๊ธฐ์กด ์†์„ฑ ๊ฐ’์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ•ญ๋ชฉ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ถ”๊ฐ€ํ•  ์ƒˆ ๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

REST API

Enum ๋ฐ์ดํ„ฐ ์œ ํ˜•์˜ ์‹œ์Šคํ…œ ์ •์˜ ์†์„ฑ์— ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ API์— PATCH ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/attributes/ATTRIBUTE

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ UpdateAttribute๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” Business unit ์†์„ฑ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"allowed_values": [
{
"id": "bu1",
"display_name": "Business unit 1",
"description": "The API can be used by business unit 1"
},
{
"id": "bu2",
"display_name": "Business unit 2",
"description": "The API can be used by business unit 2"
},
{
"id": "bu3",
"display_name": "Business unit 3",
"description": "The API can be used by business unit 3"
}]}' \
-X PATCH https://apihub.googleapis.com/v1/projects/test-15/locations/us-central1/attributes/system-business-unit?update_mask=allowed_values 

API ํ—ˆ๋ธŒ๊ฐ€ UpdateAttribute API์˜ ์š”์ฒญ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํŽ˜์ด๋กœ๋“œ์— ์ง€์ •๋œ ๊ฐ’์ด ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ํŽ˜์ด๋กœ๋“œ์—์„œ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ์—์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ํ•ด๋‹น ๊ฐ’์„ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„ํ•˜๊ณ  API ํ—ˆ๋ธŒ์—์„œ ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ์—์„œ ์ƒˆ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ์†์„ฑ์— ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ

์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๋ณด๊ธฐ

์ฝ˜์†”

๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ๋ณด๋ ค๋ฉด Google Cloud ์ฝ˜์†”์—์„œ API ํ—ˆ๋ธŒ > ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ ํƒญ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์„น์…˜์—์„œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API

๋ฆฌ์†Œ์Šค์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ API์— GET ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/attributes

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ListAttributes๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ๋Š” API ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ์ž ์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-type: application/json" \
-X GET \
https://apihub.googleapis.com/v1/projects/test-project-1/locations/us-central1/attributes?filter=definition_type=USER_DEFINED

์ƒˆ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์ถ”๊ฐ€

์ฝ˜์†”

์ƒˆ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ API ํ—ˆ๋ธŒ > ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†์„ฑ ํƒญ์˜ ์‚ฌ์šฉ์ž ์†์„ฑ ์„น์…˜์— ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ์†์„ฑ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ ์†์„ฑ ์ถ”๊ฐ€ ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  3. ๋‹ค์Œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ID: ์†์„ฑ์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
      • ์ด ํ•„๋“œ๋ฅผ ๋น„์›Œ๋‘๋ฉด API ํ—ˆ๋ธŒ์—์„œ ์ž๋™์œผ๋กœ ๊ณ ์œ  ID๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      • ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ์ž…๋ ฅํ•˜๋ ค๋ฉด ๋ชจ๋“  ์†์„ฑ์—์„œ ๊ฐ’์ด ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: ์†์„ฑ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์„ค๋ช…: ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์†์„ฑ ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐ’: 1~20 ์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ์†์„ฑ์—์„œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌ์†Œ์Šค ์œ ํ˜•: ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์œ ํ˜•: ์†์„ฑ์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์œ ํ˜•์—๋Š” String, Enum, JSON์ด ์žˆ์Šต๋‹ˆ๋‹ค. Enum ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์„ ํƒ๋œ ๊ฒฝ์šฐ + ํ•ญ๋ชฉ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ์†์„ฑ์— ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

REST API

์ƒˆ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ API์— POST ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/attributes?attribute_id=NEW_ATTRIBUTE_NAME

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ CreateAttribute๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” attribute-01 ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"  \
-d '{
"display_name" : "custom attribute",
"description" : "custom attribute details",
"definition_type" : "USER_DEFINED",
"scope" : "API",
"data_type" : "ENUM",
"allowed_values" : [
{
"id" : "value-1",
"display_name" : "Value 1",
"description" : "Value 1 test description",
"immutable" : false,
},
{
"id" : "value-2",
"display_name" : "Value 2",
"description" : "Value 2 test description",
"immutable" : false,
},
],
"cardinality" : 4,
"mandatory" : false
}' \
-X POST  https://apihub.googleapis.com/v1/projects/test-15/locations/us-central1/attributes?attribute_id=attribute-01

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์ˆ˜์ •

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์—์„œ ๋‹ค์Œ ์ˆ˜์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†์„ฑ ์ด๋ฆ„ ์—…๋ฐ์ดํŠธ
  • ์ƒˆ ์†์„ฑ ๊ฐ’ ์ถ”๊ฐ€
  • ๊ธฐ์กด ์†์„ฑ ๊ฐ’ ์‚ญ์ œ

์ฝ˜์†”

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ API ํ—ˆ๋ธŒ > ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†์„ฑ ํƒญ์˜ ์‚ฌ์šฉ์ž ์†์„ฑ ์„น์…˜์— ๊ธฐ์กด์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ์ˆ˜์ •ํ•˜๋ ค๋Š” ์†์„ฑ์—์„œ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋ฉด ์†์„ฑ ์ˆ˜์ • ์ฐฝ์ด ์—ด๋ฆฌ๊ณ  ๊ธฐ์กด ์†์„ฑ ๊ฐ’์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฆ„, ์„ค๋ช…, ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enum ์œ ํ˜•์˜ ๊ฒฝ์šฐ ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enum ์œ ํ˜•์˜ ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ•ญ๋ชฉ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ถ”๊ฐ€ํ•  ์ƒˆ ๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

REST API

์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ API์— PATCH ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/attributes/ATTRIBUTE

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ UpdateAttribute๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” API Visibility ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{"name": "projects/test-15/locations/us-central1/attributes/API Visibility",
    display_name" : "API Visibility Updated", "allowedValues": [
    {
    "id": "internal",
    "displayName": "Internal",
    "description": "The API is visible internally in an organization"
    },
    {
    "id": "external",
    "displayName": "External",
    "description": "The API is visible externally in an organization"
    },
    {
    "id": "public",
    "displayName": "Public",
    "description": "The API is visible public in an organization"
    }
    ]}' \
    -X PATCH https://autopush-apihub.sandbox.googleapis.com/v1/projects/common-dev-15/locations/us-central1/attributes/API Visibility?update_mask=display_name,allowed_values
    

API ํ—ˆ๋ธŒ๊ฐ€ UpdateAttribute API์˜ ์š”์ฒญ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํŽ˜์ด๋กœ๋“œ์— ์ง€์ •๋œ ๊ฐ’์ด ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ํŽ˜์ด๋กœ๋“œ์—์„œ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ์—์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ํ•ด๋‹น ๊ฐ’์„ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„ํ•˜๊ณ  API ํ—ˆ๋ธŒ์—์„œ ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ์—์„œ ์ƒˆ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ API ํ—ˆ๋ธŒ๋Š” ์†์„ฑ์— ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค ํ•„ํ„ฐ๋ง

์‚ฌ์šฉ์ž ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ฉด API๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๋•Œ ๋” ์œ ์—ฐํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ง๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • API๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ API์— GET ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

https://apihub.googleapis.com/v1/projects/PROJECT/locations/LOCATION/apis

API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ListApis๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๊ฐ’์ธ String ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” API ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-type: application/json" \
-X GET \
https://apihub.googleapis.com/v1/projects/test-project-1/locations/us-central1/apis?filter=attributes.projects/test-project-1/locations/us-central1/attributes/cdcb1260-ed63-4e5b-935d-4394f178da4f.string_values.values:helloworld