OpenAPI ์‚ฌ์–‘์—์„œ API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ

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

Apigee Edge ๋ฌธ์„œ ๋ณด๊ธฐ

ํ•™์Šตํ•  ๋‚ด์šฉ

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • OpenAPI ์‚ฌ์–‘์—์„œ Apigee API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • cURL์„ ์‚ฌ์šฉํ•˜์—ฌ API ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์— ์ •์ฑ…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • cURL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ฑ… ํ˜ธ์ถœ์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

Apigee UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OpenAPI ์‚ฌ์–‘์—์„œ Apigee API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. cURL๊ณผ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๋กœ API ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด API ํ”„๋ก์‹œ๊ฐ€ ์š”์ฒญ์„ Apigee ๋ชจ์˜ ๋Œ€์ƒ ์„œ๋น„์Šค๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

Open API Initiative ์ •๋ณด

Open API Initiative

"Open API Initiative(OAI)๋Š” Swagger ์‚ฌ์–‘์— ๋”ฐ๋ผ ๊ณต๊ธ‰์—…์ฒด ์ค‘๋ฆฝ์ ์ธ API ์„ค๋ช… ํ˜•์‹์„ ์ƒ์„ฑ, ์ง„ํ™”, ํ™๋ณดํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." Open API Initiative์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ OpenAPI ์‚ฌ์–‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

OpenAPI ์‚ฌ์–‘์—์„œ๋Š” ํ‘œ์ค€ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ RESTful API๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. JSON ๋˜๋Š” YAML ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋œ OpenAPI ์‚ฌ์–‘์„ ๋จธ์‹ ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ๋žŒ๋„ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘์€ ๊ธฐ๋ณธ ๊ฒฝ๋กœ, ๊ฒฝ๋กœ ๋ฐ ๋™์‚ฌ, ํ—ค๋”, ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜, ์ž‘์—…, ์ฝ˜ํ…์ธ  ์œ ํ˜•, ์‘๋‹ต ์„ค๋ช…๊ณผ ๊ฐ™์€ API ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ OpenAPI ์‚ฌ์–‘์€ ์ผ๋ฐ˜์ ์œผ๋กœ API ์ฐธ๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Apigee ๋ชจ์˜ ๋Œ€์ƒ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ •๋ณด

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

http://mocktarget.apigee.net

๋Œ€์ƒ ์„œ๋น„์Šค๊ฐ€ ์ธ์‚ฌ๋ง Hello, guest!๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ์˜ ๋Œ€์ƒ ์„œ๋น„์Šค๊ฐ€ ์ง€์›ํ•˜๋Š” ์ „์ฒด API ์„ธํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Apigee Sample API๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค€๋น„๋ฌผ

  • ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ๊ฐœ์š” ๋ฐ ๊ธฐ๋ณธ ์š”๊ฑด์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • OpenAPI ์‚ฌ์–‘. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Apigee์˜ ๋ชจ์˜ ๋Œ€์ƒ ์„œ๋น„์Šค์ธ http://mocktarget.apigee.net์„ ์„ค๋ช…ํ•˜๋Š” mocktarget.yaml OpenAPI ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ apigee/api-platform-samples๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ๋ช…๋ น์ค„์—์„œ API ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋จธ์‹ ์— ์„ค์น˜๋œ cURL ๋˜๋Š” ์›น๋ธŒ๋ผ์šฐ์ €

API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ

OpenAPI ์‚ฌ์–‘์—์„œ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

Cloud ์ฝ˜์†”์˜ Apigee

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

    API ํ”„๋ก์‹œ๋กœ ์ด๋™

  2. API ํ”„๋ก์‹œ ์ฐฝ์—์„œ + ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ์ฐฝ์˜ ํ”„๋ก์‹œ ํ…œํ”Œ๋ฆฟ > OpenAPI ์‚ฌ์–‘ ํ…œํ”Œ๋ฆฟ์—์„œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(๊ฐ€์žฅ ์ผ๋ฐ˜์ )๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ URL๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    https://raw.githubusercontent.com/apigee/api-platform-samples/master/default-proxies/helloworld/openapi/mocktarget3.0.yaml
  5. ํ‘œ์‹œ๋œ ์ฝ”๋“œ๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ์ €์žฅ์„ ํด๋ฆญํ•˜์—ฌ ์›ํ•˜๋Š” ์œ„์น˜์— mocktarget3.0.yaml์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  7. OpenAPI ์‚ฌ์–‘ ํ•„๋“œ์—์„œ ์ฐพ์•„๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. mocktarget3.0.yaml ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ์—ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  9. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ์˜ ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ๋‹จ๊ณ„์—์„œ๋Š” OpenAPI ์‚ฌ์–‘์—์„œ ์ง์ ‘ ์ถ”์ถœํ•œ ๊ฐ’์œผ๋กœ ํ•„๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
  11. ๋‹ค์Œ ํ‘œ์—์„œ๋Š” OpenAPI ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ฑ„์›Œ์ง„ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ํ•„๋“œ ์„ค๋ช… ๊ธฐ๋ณธ๊ฐ’
    ํ”„๋ก์‹œ ์ด๋ฆ„ API ํ”„๋ก์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Mock-Target-API์ž…๋‹ˆ๋‹ค. ๋Œ€์‹œ์— ์˜ํ•ด ๊ณต๋ฐฑ์ด ๊ต์ฒด๋œ OpenAPI ์‚ฌ์–‘์˜ title ์†์„ฑ
    ๊ธฐ๋ณธ ๊ฒฝ๋กœ ์กฐ์ง ๋‚ด์—์„œ ์ด API ํ”„๋ก์‹œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๊ฒฝ๋กœ ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ด API ํ”„๋ก์‹œ์˜ ๊ณต๊ฐœ์šฉ URL์€ ์™ธ๋ถ€ ๋˜๋Š” ๋‚ด๋ถ€ ๋„๋ฉ”์ธ ์ด๋ฆ„๊ณผ ์ด ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. http://apitest.acme.com/mock-target-api ์ด๋ฆ„ ํ•„๋“œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋จ
    ์„ค๋ช… API ํ”„๋ก์‹œ์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. OpenAPI ์‚ฌ์–‘์˜ description ์†์„ฑ
    ๋Œ€์ƒ(๊ธฐ์กด API) ์ด API ํ”„๋ก์‹œ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ํ˜ธ์ถœ๋œ ๋Œ€์ƒ URL. ๊ฐœ๋ฐฉํ˜• ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  URL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. http://mocktarget.apigee.net OpenAPI ์‚ฌ์–‘์˜ servers ์†์„ฑ

    ๋‹ค์Œ์€ OpenAPI ์‚ฌ์–‘์—์„œ ํ•„๋“œ๋ฅผ ์ž๋™ ์ž…๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐœ์ทŒ๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

          openapi: 3.0.0
          info:
            description: OpenAPI Specification for the Apigee mock target service endpoint.
            version: 1.0.0
            title: Mock Target API
          paths:
            /:
              get:
                summary: View personalized greeting
                operationId: View a personalized greeting
                description: View a personalized greeting for the specified or guest user.
                parameters:
                  - name: user
                    in: query
                    description: Your user name.
                    required: false
                    schema:
                      type: string
                responses:
                  "200":
                    description: Success
          ...
          servers:
            - url: http://mocktarget.apigee.net
            - url: https://mocktarget.apigee.net
          ...
          
  12. ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ์„ค๋ช… ํ•„๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    API proxy for the Apigee mock target service endpoint.
  13. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  14. ํ๋ฆ„ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ์ž‘์—…์ด ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  15. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  16. ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ™˜๊ฒฝ์„ ์„ ํƒํ•˜๊ณ  ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  17. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Apigee UI

  1. ๊ฐœ๋ฐœ > API ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ”„๋ก์‹œ ์ฐฝ์—์„œ ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ธฐ๋ณธ ์ฐฝ์—์„œ API ํ”„๋ก์‹œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋˜๋Š” ์™ผ์ชฝ ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฐœ๋ฐœ > API ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€์—์„œ API ํ”„๋ก์‹œ ํด๋ฆญ

  3. ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ ์ถ”๊ฐ€
  4. ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ์—์„œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(๊ฐ€์žฅ ์ผ๋ฐ˜์ ) ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•ด OpenAPI ์‚ฌ์–‘ ์‚ฌ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ์œ ํ˜• ๋นŒ๋“œ
  5. URL์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    OpenAPI ์‚ฌ์–‘ URL: URL ํ•„๋“œ์—์„œ GitHub์˜ OpenAPI ์‚ฌ์–‘์— ๋Œ€ํ•œ ์›์‹œ ์ฝ˜ํ…์ธ  ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    https://raw.githubusercontent.com/apigee/api-platform-samples/master/default-proxies/helloworld/openapi/mocktarget3.0.yaml
  6. ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ์˜ ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๋Š” ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด OpenAPI ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” OpenAPI ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ฑ„์›Œ์ง„ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ํ•„๋“œ ์„ค๋ช… ๊ธฐ๋ณธ๊ฐ’
    ์ด๋ฆ„ API ํ”„๋ก์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Mock-Target-API์ž…๋‹ˆ๋‹ค. ๋Œ€์‹œ์— ์˜ํ•ด ๊ณต๋ฐฑ์ด ๊ต์ฒด๋œ OpenAPI ์‚ฌ์–‘์˜ title ์†์„ฑ
    ๊ธฐ๋ณธ ๊ฒฝ๋กœ ์กฐ์ง ๋‚ด์—์„œ ์ด API ํ”„๋ก์‹œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๊ฒฝ๋กœ ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ด API ํ”„๋ก์‹œ์˜ ๊ณต๊ฐœ์šฉ URL์€ ์™ธ๋ถ€ ๋˜๋Š” ๋‚ด๋ถ€ ๋„๋ฉ”์ธ ์ด๋ฆ„๊ณผ ์ด ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด http://apitest.acme.com/mock-target-api์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ํ•„๋“œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋จ
    ์„ค๋ช… API ํ”„๋ก์‹œ์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. OpenAPI ์‚ฌ์–‘์˜ description ์†์„ฑ
    ๋Œ€์ƒ(๊ธฐ์กด API) ์ด API ํ”„๋ก์‹œ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ํ˜ธ์ถœ๋œ ๋Œ€์ƒ URL. ๊ฐœ๋ฐฉํ˜• ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  URL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด http://mocktarget.apigee.net์ž…๋‹ˆ๋‹ค. OpenAPI ์‚ฌ์–‘์˜ servers ์†์„ฑ

    ๋‹ค์Œ์€ OpenAPI ์‚ฌ์–‘์—์„œ ํ•„๋“œ๋ฅผ ์ž๋™ ์ž…๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐœ์ทŒ๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    openapi: 3.0.0
    info:
      description: OpenAPI Specification for the Apigee mock target service endpoint.
      version: 1.0.0
      title: Mock Target API
    paths:
      /:
        get:
          summary: View personalized greeting
          operationId: View a personalized greeting
          description: View a personalized greeting for the specified or guest user.
          parameters:
            - name: user
              in: query
              description: Your user name.
              required: false
              schema:
                type: string
          responses:
            "200":
              description: Success
    ...
    servers:
      - url: http://mocktarget.apigee.net
      - url: https://mocktarget.apigee.net
    ...
    
  7. ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ์„ค๋ช… ํ•„๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    API proxy for the Apigee mock target service endpoint.
  8. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  9. ์ผ๋ฐ˜ ์ •์ฑ… ํŽ˜์ด์ง€์˜ ๋ณด์•ˆ: ์Šน์ธ์—์„œ ํ†ต๊ณผ(์Šน์ธ ์—†์Œ)๊ฐ€ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ณตํ†ต ์ •์ฑ… ํŽ˜์ด์ง€์—์„œ ํ†ต๊ณผ(์Šน์ธ ์—†์Œ) ์„ ํƒ๋จ

  10. ํ๋ฆ„ ํŽ˜์ด์ง€์—์„œ ๋ชจ๋“  ์ž‘์—…์ด ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํ๋ฆ„ ๋นŒ๋“œ
  11. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  12. ์š”์•ฝ ํŽ˜์ด์ง€์˜ ์„ ํƒ์  ๋ฐฐํฌ์—์„œ ํ™˜๊ฒฝ์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    Apigee๋Š” ์ƒˆ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐœ๋ฐœ์ž ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

  13. ํ”„๋ก์‹œ ์ˆ˜์ •์„ ํด๋ฆญํ•˜์—ฌ API ํ”„๋ก์‹œ์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

API ํ”„๋ก์‹œ ํ…Œ์ŠคํŠธ

cURL ๋˜๋Š” ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mock-Target-API API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

curl -v YOUR_ENV_GROUP_HOSTNAME/myproxy

์—ฌ๊ธฐ์„œ YOUR_ENV_GROUP_HOSTNAME์€ ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

curl -v -k https://apitest.acme.com/myproxy

์‘๋‹ต

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Hello, Guest!

JSON ์ •์ฑ…์— XML ์ถ”๊ฐ€

๋‹ค์Œ์œผ๋กœ, OpenAPI ์‚ฌ์–‘์—์„œ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ XML ์‘๋‹ต ๋ณด๊ธฐ ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์— ๋Œ€ํ•œ JSON ์ •์ฑ…์— XML์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์€ ๋Œ€์ƒ์˜ XML ์‘๋‹ต์„ JSON ์‘๋‹ต์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ •์ฑ…์„ ์ถ”๊ฐ€ํ•œ ํ›„์— ์–ป์€ ๊ฒฐ๊ณผ์™€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ๋‹ค์Œ cURL ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ์„œ๋น„์Šค์˜ /xml ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ XML์˜ ๊ฐ„๋‹จํ•œ ๋ธ”๋ก์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

curl -v https://YOUR_ENV_GROUP_HOSTNAME/mock-target-api/xml

์—ฌ๊ธฐ์„œ YOUR ENV_GROUP_HOSTNAME์€ ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‘๋‹ต

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

<root> 
  <city>San Jose</city> 
  <firstName>John</firstName> 
  <lastName>Doe</lastName> 
  <state>CA</state> 
</root>

์ด์ œ XML ์‘๋‹ต์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. API ํ”„๋ก์‹œ์—์„œ XML์—์„œ JSON์œผ๋กœ ๋ณ€ํ™˜ ์ •์ฑ…์„ XML ์‘๋‹ต ๋ณด๊ธฐ ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Cloud ์ฝ˜์†”์˜ Apigee

  1. Apigee UI์˜ Mock-Target-API ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๊ฐœ๋ฐœ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. XML ์‘๋‹ต ๋ณด๊ธฐ ์„ ํƒ

  3. ์™ผ์ชฝ ์ฐฝ์˜ ํ”„๋ก์‹œ ์—”๋“œํฌ์ธํŠธ > ๊ธฐ๋ณธ๊ฐ’์—์„œ XML ์‘๋‹ต ๋ณด๊ธฐ ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์™ผ์ชฝ ์ฐฝ์—์„œ ์ •์ฑ… ํ–‰์— ์žˆ๋Š” + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ •์ฑ… ๋งŒ๋“ค๊ธฐ ๋Œ€ํ™”์ƒ์ž์—์„œ ์ •์ฑ… ์œ ํ˜• ์„ ํƒ ํ•„๋“œ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋ฏธ๋””์—์ด์…˜์œผ๋กœ ์Šคํฌ๋กคํ•˜๊ณ  XMLToJSON์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์‹œ ์ด๋ฆ„๊ณผ ์ด๋ฆ„์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.

  6. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ •์ฑ…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  7. ์‘๋‹ต์—์„œ XML ์‘๋‹ต ๋ณด๊ธฐ ํ๋ฆ„ ์˜†์— ์žˆ๋Š” + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    +๋‹จ๊ณ„ ์„ ํƒ

  8. ์ •์ฑ… ๋‹จ๊ณ„ ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž์—์„œ ๊ธฐ์กด ์ •์ฑ… ์„ ํƒ ํ•„๋“œ๋ฅผ ํด๋ฆญํ•˜๊ณ  XML to JSON-1์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. XML to JSON ์ •์ฑ…์ด ์‘๋‹ต์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    ํ๋ฆ„์—์„œ XML to JSON ์ •์ฑ…

    XML ์‘๋‹ต ๋ณด๊ธฐ ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ ค๋ฉด ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋กœ ์ „ํ™˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  10. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Apigee UI

  1. Apigee UI์˜ Mock-Target-API ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๊ฐœ๋ฐœ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐœ๋ฐœ์ž ํƒญ
  2. ์™ผ์ชฝ ํƒ์ƒ‰๊ธฐ ์ฐฝ์˜ ํ”„๋ก์‹œ ์—”๋“œํฌ์ธํŠธ > ๊ธฐ๋ณธ๊ฐ’์—์„œ XML ์‘๋‹ต ๋ณด๊ธฐ ์กฐ๊ฑด๋ถ€ ํ๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    XML ์‘๋‹ต ๋ณด๊ธฐ ์„ ํƒ
  3. ํ๋ฆ„์˜ ์‘๋‹ต์— ํ•ด๋‹นํ•˜๋Š” ํ•˜๋‹จ์˜ +๋‹จ๊ณ„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    +๋‹จ๊ณ„ ์„ ํƒ

    ๋‹จ๊ณ„ ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž๊ฐ€ ์—ด๋ฆฌ๊ณ  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ •์ฑ…์ด ๋ถ„๋ฅ˜๋œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ๋ฏธ๋””์—์ด์…˜ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์Šคํฌ๋กคํ•˜๊ณ  XML to JSON์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ๊ณ„ ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž
  5. ํ‘œ์‹œ ์ด๋ฆ„๊ณผ ์ด๋ฆ„์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.
  6. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. XML to JSON ์ •์ฑ…์ด ์‘๋‹ต์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    ํ๋ฆ„์—์„œ XML to JSON ์ •์ฑ…
  7. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ…์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฏ€๋กœ ์ด์ œ cURL์„ ์‚ฌ์šฉํ•˜์—ฌ API๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ /xml ๋ฆฌ์†Œ์Šค๋ฅผ ์—ฌ์ „ํžˆ ํ˜ธ์ถœํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ์„œ๋น„์Šค๋Š” ์—ฌ์ „ํžˆ XML ๋ธ”๋ก์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์ด์ œ API ํ”„๋ก์‹œ์˜ ์ •์ฑ…์ด ์‘๋‹ต์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

curl -v https://YOUR_ENV_GROUP_HOSTNAME/mock-target-api/xml

์—ฌ๊ธฐ์„œ YOUR ENV_GROUP_HOSTNAME์€ ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

XML ์‘๋‹ต์€ JSON์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

{"root":{"city":"San Jose","firstName":"John","lastName":"Doe","state":"CA"}}