SlideShare a Scribd company logo
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1
th
김동후 (Oracle Korea)
API Design and Prototype
2019.04.20
10
th Oracle
Developer
Meetup
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 22
https://medium.com/better-practices/the-ultimate-api-publishers-guide-be74a2692326
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 3
How to Design a Good API and Why it Matters
조슈아 블로치
소프트웨어 아키텍처
Effective Java의 저자Public APIs, like diamonds, are forever.
You have one chance to get it right so give it your best.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 44https://www.programmableweb.com/api-university/understanding-api-first-design
4-5배제품 출시 전 발생한 오류에 대한 해결
비용
100배제품 출시 후 유지보수 단계에서 확인된
오류에 대한 최대 해결 비용
5Copyright © 2018, Oracle and/or its affiliates. All rights reserved.
API Design이 왜 중요한가?
API-First design is a paradigm shift
Relative Costs to Fix Software Defects (Source: IBM Systems Sciences
Institute)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
API First Design & Prototype Process
Confidential – Oracle Internal/Restricted/Highly Restricted 66
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
API First Design
Confidential – Oracle Internal/Restricted/Highly Restricted 77
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 88
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 99
https://smartbear.com/resources/ebooks/the-state-of-api-2019-report/
The State of API2019Report
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Swagger, RAML, API Blueprint
Confidential – Oracle Internal/Restricted/Highly Restricted 1010
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
API Documentation
Confidential – Oracle Internal/Restricted/Highly Restricted 1111
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1212
API Blueprint 는 API Design First 접근을 위한 가장 적합한 방법
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1313
https://apiblueprint.org/
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1414
API Name and metadata
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1515
Resource Groups
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1616
Resource
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1717
Actions
Resource URI
URI Template or Query Parameter {?param1, param2…}
Path Parameter {param1}
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1818
Request > Parameters
+ key : 샘플 값 (type, optional/required) - 설명
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1919
Request > Headers/Body
Content-Type 지정 (보통 PUT/POST 에서 JSON 형식으로 넘길 경우 지정)
Header 와 Header Key / Value 정의
PUT/POST 에서 JSON으로 데이터 전달할 때
JSON 형식의 샘플로 정의
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2020
Response > Headers/Body
Content-Type 지정 (JSON 형식으로 응답을 받는 경우)
Header 와 Header Key / Value 정의
JSON 형식 응답을 받는 경우
JSON 형식의 샘플로 정의
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2121
Response Without a Body
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2222
Attributes (Markdown Syntax Objection Notation)
각 속성은 Parameters 지정과 동일
https://github.com/apiaryio/mson/blob/master/MSON%20Specification.md
Included MoviePeopleMeta
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2323
API Documentation
Mock API Url
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2424
API Blueprint Editors
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2525
Apiary
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2626
Vscode-apielements
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2727
API Prototype
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2828
API Prototype with API Gateway
프로토타입 UI
• API Key, OAuth, Basic Auth
• 트래픽 제어
• 단일 엔드 포인트
• 모니터링
• 로그
API Management &
Gateway
RESTful Service
Resource
RESTful Service
Resource
RESTful Service
Resource
RESTful Service
Resource
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2929
API Prototype with API Gateway
API 디자인 설계
프로토타입 UI
API Mocking
• API Key, OAuth, Basic Auth
• 트래픽 제어
• 단일 엔드 포인트
• 모니터링
• 로그
API Management &
Gateway
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3030
API First Design & Prototype Hands-on
실습을 위한 준비 사항
• 깃헙 (https://github.com) 계정 – Apiary 계정을 만들기 위해서 필요
• Nodejs 설치 필요
• https://nodejs.org/ko/download/current/
• UI 프로토타입을 위해서 Oracle JET 설치를 위해 필요 (가급적 최신 버전)
• https://github.com/MangDan/meetup-190420-api 다운로드해서 압축 해제
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3131
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3232
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3333
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
10 : ## 영화 정보 리소스 [/api/search/v1/movies]
12 : ### 영화 조회 [GET /api/search/v1/movies{?title}]
21 : + Parameters
22 : + title : 대부 (string, optional) – 제목
69 : ### 영화 상세 조회 [GET /api/search/v1/movies/{id}]
tab
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3434
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
133 : # Data Structures
135 : ## MoviePeople (object)
136 : + Include MoviePeopleMeta
137 : + filmography : 쇼생크 탈출 (string, optional) - 필모그래피
139 : ## MoviePeopleMeta (object)
140 : + id : 10084614 (number, required) - 아이디
141 : + name : 프랭크 다라본트 (string, required) – 이름
142 : + role : 감독 (string, optional) - 역할
타이핑이 어려우신 분들은 1.3. API Blueprint 완성된 문서에서 복사해서 붙여넣기
하셔도 됩니다.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3535
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
116 : + Attributes (array[MoviePeopleMeta])
131 : + Attributes (MoviePeople)
tab
tab
여기까지 못 따라 오신 분들은 1.3. API Blueprint 완성된 문서 내용을 붙여넣기 하셔도 됩니다.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3636
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3737
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3838
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3939
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4040
API First Design Hands-on
https://github.com/MangDan/meetup-190420-api
UI Prototype을 위해서
Mock 서버의 호스트 정보를 확인합니다.
e.g.) http://private-df8a0-api722.apiary-mock.com
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4141
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
API 디자인 설계
• CORS
• api_key
API Management &
Gateway
API Mocking
두개의 보안 정책 적용
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4242
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
API 게이트웨이 배포
http://132.145.161.244:8011/api/search/v1
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4343
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
API 디자인 설계
API Mocking
• CORS
• api_key
API Management &
Gateway
http://132.145.161.244:8011/api/search/v1
endpoint
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4444
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
상단 meetup-190420-api 레파지토리를 클릭한 후 Clone or download 을 선택하고 Download Zip
버튼을 클릭해서 레파지토리 소스를 임의의 디렉토리에 다운로드 받고 압축을 해제합니다.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4545
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
http://oraclejet.org
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4646
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
오라클 JET (UI) 프로젝트안으로 이동, 소스내 URL을 API Gateway의 Endpoint로 변경
(이미 적용되어 있습니다.)
• jet-movie-msa-ui/src/js/endpoints.json
{
"movies": "http://132.145.161.244:8011/api/search/v1/movies",
"image": "https://image.tmdb.org/t/p/w185"
}
• JET UI를 시작하기 위해서 Oracle JET CLI를 설치
• npm install -g @oracle/ojet-cli
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4747
API Prototype Hands-on
https://github.com/MangDan/meetup-190420-api
• cd jet-movie-msa-ui
• npm install @oracle/oraclejet-tooling --save
• ojet serve
http://localhost:8080
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4848
API First Design & Prototype
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4949
다음 시간에는…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
감사합니다.
Confidential – Oracle Internal/Restricted/Highly Restricted 50

More Related Content

PPTX
Building microservice for api with helidon and cicd pipeline
PDF
API Design Principles Essential 
PDF
JavaOne 2014 BOF4241 What's Next for JSF?
PDF
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
PDF
CON5898 What Servlet 4.0 Means To You
PPTX
Servlet 4.0 at GeekOut 2015
PDF
20191119 Cloud Native Java : GraalVM
PDF
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Building microservice for api with helidon and cicd pipeline
API Design Principles Essential 
JavaOne 2014 BOF4241 What's Next for JSF?
DEVNET-2002 Coding 201: Coding Skills 201: Going Further with REST and Python...
CON5898 What Servlet 4.0 Means To You
Servlet 4.0 at GeekOut 2015
20191119 Cloud Native Java : GraalVM
Adopt-a-JSR for JSON Processing 1.1, JSR 374

What's hot (20)

PDF
Spring boot microservice metrics monitoring
PPTX
Apic dc api deep dive
PDF
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
PPTX
Jakarta EE: Today and Tomorrow
PDF
Spring - CDI Interop
PPTX
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
KEY
Apache, osgi and karaf par Guillaume Nodet
PPT
Reactive Java EE - Let Me Count the Ways!
PDF
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
PDF
CamelOne 2013 Karaf A-MQ Camel CXF Security
PDF
Cloud Native Java GraalVM 이상과 현실
PDF
Web protocols for java developers
PDF
MVC 1.0 / JSR 371
PPT
GlassFish BOF
PDF
EJB and CDI - Alignment and Strategy
PPT
Down-to-Earth Microservices with Java EE
PDF
Modern web application development with java ee 7
PDF
WebSockets in Enterprise Applications
PDF
WebSocket in Enterprise Applications 2015
PDF
Puppet devops wdec
Spring boot microservice metrics monitoring
Apic dc api deep dive
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
Jakarta EE: Today and Tomorrow
Spring - CDI Interop
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
Apache, osgi and karaf par Guillaume Nodet
Reactive Java EE - Let Me Count the Ways!
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
CamelOne 2013 Karaf A-MQ Camel CXF Security
Cloud Native Java GraalVM 이상과 현실
Web protocols for java developers
MVC 1.0 / JSR 371
GlassFish BOF
EJB and CDI - Alignment and Strategy
Down-to-Earth Microservices with Java EE
Modern web application development with java ee 7
WebSockets in Enterprise Applications
WebSocket in Enterprise Applications 2015
Puppet devops wdec
Ad

Similar to Api design and prototype (20)

PDF
10thMeetup-20190420-REST API Design Principles 되새기기
PDF
Mobile Cloud Demo
PDF
Oracle Mobile Cloud / Bot
PDF
API 자동화 문서 도입기.pdf
PDF
Oracle Mobile Solution Overview
PDF
Oracle cloud data interface
PPTX
RESTful API 제대로 만들기
PPTX
Java EE7
PPTX
Before OTD EDU - Introduction
PPTX
Jersey framework
PPTX
Lw 4.1
PPTX
Web application apis
PDF
11회 Oracle Developer Meetup 발표 자료: Oracle NoSQL (2019.05.18) oracle-nosql pu...
PDF
Building multi tenancy enterprise applications
PPTX
microservice architecture public education v2
PDF
[Hello world 오픈세미나]공공정보와 네이버 오픈api
PPTX
Oracle Cloud에서 애플리케이션을 개발하고 테스트하는 손쉬운 방법
PDF
Oracle Cloud World 2019 - Oracle Digital Assistant
PDF
Oracle Chatbot (챗봇) 솔루션
PDF
Oracle Blockchain Platform_Wonjo Yoo
10thMeetup-20190420-REST API Design Principles 되새기기
Mobile Cloud Demo
Oracle Mobile Cloud / Bot
API 자동화 문서 도입기.pdf
Oracle Mobile Solution Overview
Oracle cloud data interface
RESTful API 제대로 만들기
Java EE7
Before OTD EDU - Introduction
Jersey framework
Lw 4.1
Web application apis
11회 Oracle Developer Meetup 발표 자료: Oracle NoSQL (2019.05.18) oracle-nosql pu...
Building multi tenancy enterprise applications
microservice architecture public education v2
[Hello world 오픈세미나]공공정보와 네이버 오픈api
Oracle Cloud에서 애플리케이션을 개발하고 테스트하는 손쉬운 방법
Oracle Cloud World 2019 - Oracle Digital Assistant
Oracle Chatbot (챗봇) 솔루션
Oracle Blockchain Platform_Wonjo Yoo
Ad

Recently uploaded (20)

PDF
Sensors and Actuators in IoT Systems using pdf
PPTX
CroxyProxy Instagram Access id login.pptx
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
KodekX | Application Modernization Development
PDF
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
PDF
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Enable Enterprise-Ready Security on IBM i Systems.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
PPTX
Web Security: Login Bypass, SQLi, CSRF & XSS.pptx
PPTX
How to Build Crypto Derivative Exchanges from Scratch.pptx
PDF
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
PDF
Top Generative AI Tools for Patent Drafting in 2025.pdf
PDF
Event Presentation Google Cloud Next Extended 2025
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
PPTX
Belt and Road Supply Chain Finance Blockchain Solution
Sensors and Actuators in IoT Systems using pdf
CroxyProxy Instagram Access id login.pptx
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
KodekX | Application Modernization Development
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
Chapter 3 Spatial Domain Image Processing.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Enable Enterprise-Ready Security on IBM i Systems.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Web Security: Login Bypass, SQLi, CSRF & XSS.pptx
How to Build Crypto Derivative Exchanges from Scratch.pptx
CIFDAQ's Market Wrap: Ethereum Leads, Bitcoin Lags, Institutions Shift
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Top Generative AI Tools for Patent Drafting in 2025.pdf
Event Presentation Google Cloud Next Extended 2025
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Belt and Road Supply Chain Finance Blockchain Solution

Api design and prototype

  • 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1 th 김동후 (Oracle Korea) API Design and Prototype 2019.04.20 10 th Oracle Developer Meetup
  • 2. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 22 https://medium.com/better-practices/the-ultimate-api-publishers-guide-be74a2692326
  • 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 3 How to Design a Good API and Why it Matters 조슈아 블로치 소프트웨어 아키텍처 Effective Java의 저자Public APIs, like diamonds, are forever. You have one chance to get it right so give it your best.
  • 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 44https://www.programmableweb.com/api-university/understanding-api-first-design
  • 5. 4-5배제품 출시 전 발생한 오류에 대한 해결 비용 100배제품 출시 후 유지보수 단계에서 확인된 오류에 대한 최대 해결 비용 5Copyright © 2018, Oracle and/or its affiliates. All rights reserved. API Design이 왜 중요한가? API-First design is a paradigm shift Relative Costs to Fix Software Defects (Source: IBM Systems Sciences Institute)
  • 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | API First Design & Prototype Process Confidential – Oracle Internal/Restricted/Highly Restricted 66
  • 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | API First Design Confidential – Oracle Internal/Restricted/Highly Restricted 77
  • 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 88
  • 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 99 https://smartbear.com/resources/ebooks/the-state-of-api-2019-report/ The State of API2019Report
  • 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Swagger, RAML, API Blueprint Confidential – Oracle Internal/Restricted/Highly Restricted 1010
  • 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | API Documentation Confidential – Oracle Internal/Restricted/Highly Restricted 1111
  • 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1212 API Blueprint 는 API Design First 접근을 위한 가장 적합한 방법
  • 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1313 https://apiblueprint.org/
  • 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1414 API Name and metadata
  • 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1515 Resource Groups
  • 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1616 Resource
  • 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1717 Actions Resource URI URI Template or Query Parameter {?param1, param2…} Path Parameter {param1}
  • 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1818 Request > Parameters + key : 샘플 값 (type, optional/required) - 설명
  • 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1919 Request > Headers/Body Content-Type 지정 (보통 PUT/POST 에서 JSON 형식으로 넘길 경우 지정) Header 와 Header Key / Value 정의 PUT/POST 에서 JSON으로 데이터 전달할 때 JSON 형식의 샘플로 정의
  • 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2020 Response > Headers/Body Content-Type 지정 (JSON 형식으로 응답을 받는 경우) Header 와 Header Key / Value 정의 JSON 형식 응답을 받는 경우 JSON 형식의 샘플로 정의
  • 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2121 Response Without a Body
  • 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2222 Attributes (Markdown Syntax Objection Notation) 각 속성은 Parameters 지정과 동일 https://github.com/apiaryio/mson/blob/master/MSON%20Specification.md Included MoviePeopleMeta
  • 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2323 API Documentation Mock API Url
  • 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2424 API Blueprint Editors
  • 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2525 Apiary
  • 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2626 Vscode-apielements
  • 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2727 API Prototype
  • 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2828 API Prototype with API Gateway 프로토타입 UI • API Key, OAuth, Basic Auth • 트래픽 제어 • 단일 엔드 포인트 • 모니터링 • 로그 API Management & Gateway RESTful Service Resource RESTful Service Resource RESTful Service Resource RESTful Service Resource
  • 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 2929 API Prototype with API Gateway API 디자인 설계 프로토타입 UI API Mocking • API Key, OAuth, Basic Auth • 트래픽 제어 • 단일 엔드 포인트 • 모니터링 • 로그 API Management & Gateway
  • 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3030 API First Design & Prototype Hands-on 실습을 위한 준비 사항 • 깃헙 (https://github.com) 계정 – Apiary 계정을 만들기 위해서 필요 • Nodejs 설치 필요 • https://nodejs.org/ko/download/current/ • UI 프로토타입을 위해서 Oracle JET 설치를 위해 필요 (가급적 최신 버전) • https://github.com/MangDan/meetup-190420-api 다운로드해서 압축 해제
  • 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3131 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3232 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3333 API First Design Hands-on https://github.com/MangDan/meetup-190420-api 10 : ## 영화 정보 리소스 [/api/search/v1/movies] 12 : ### 영화 조회 [GET /api/search/v1/movies{?title}] 21 : + Parameters 22 : + title : 대부 (string, optional) – 제목 69 : ### 영화 상세 조회 [GET /api/search/v1/movies/{id}] tab
  • 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3434 API First Design Hands-on https://github.com/MangDan/meetup-190420-api 133 : # Data Structures 135 : ## MoviePeople (object) 136 : + Include MoviePeopleMeta 137 : + filmography : 쇼생크 탈출 (string, optional) - 필모그래피 139 : ## MoviePeopleMeta (object) 140 : + id : 10084614 (number, required) - 아이디 141 : + name : 프랭크 다라본트 (string, required) – 이름 142 : + role : 감독 (string, optional) - 역할 타이핑이 어려우신 분들은 1.3. API Blueprint 완성된 문서에서 복사해서 붙여넣기 하셔도 됩니다.
  • 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3535 API First Design Hands-on https://github.com/MangDan/meetup-190420-api 116 : + Attributes (array[MoviePeopleMeta]) 131 : + Attributes (MoviePeople) tab tab 여기까지 못 따라 오신 분들은 1.3. API Blueprint 완성된 문서 내용을 붙여넣기 하셔도 됩니다.
  • 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3636 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3737 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3838 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 3939 API First Design Hands-on https://github.com/MangDan/meetup-190420-api
  • 40. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4040 API First Design Hands-on https://github.com/MangDan/meetup-190420-api UI Prototype을 위해서 Mock 서버의 호스트 정보를 확인합니다. e.g.) http://private-df8a0-api722.apiary-mock.com
  • 41. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4141 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api API 디자인 설계 • CORS • api_key API Management & Gateway API Mocking 두개의 보안 정책 적용
  • 42. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4242 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api API 게이트웨이 배포 http://132.145.161.244:8011/api/search/v1
  • 43. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4343 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api API 디자인 설계 API Mocking • CORS • api_key API Management & Gateway http://132.145.161.244:8011/api/search/v1 endpoint
  • 44. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4444 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api 상단 meetup-190420-api 레파지토리를 클릭한 후 Clone or download 을 선택하고 Download Zip 버튼을 클릭해서 레파지토리 소스를 임의의 디렉토리에 다운로드 받고 압축을 해제합니다.
  • 45. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4545 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api http://oraclejet.org
  • 46. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4646 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api 오라클 JET (UI) 프로젝트안으로 이동, 소스내 URL을 API Gateway의 Endpoint로 변경 (이미 적용되어 있습니다.) • jet-movie-msa-ui/src/js/endpoints.json { "movies": "http://132.145.161.244:8011/api/search/v1/movies", "image": "https://image.tmdb.org/t/p/w185" } • JET UI를 시작하기 위해서 Oracle JET CLI를 설치 • npm install -g @oracle/ojet-cli
  • 47. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4747 API Prototype Hands-on https://github.com/MangDan/meetup-190420-api • cd jet-movie-msa-ui • npm install @oracle/oraclejet-tooling --save • ojet serve http://localhost:8080
  • 48. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4848 API First Design & Prototype
  • 49. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 4949 다음 시간에는…
  • 50. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 감사합니다. Confidential – Oracle Internal/Restricted/Highly Restricted 50

Editor's Notes

  • #3: Log in to Media Manager (https://omm.us.oracle.com) using your SSO and select the ASSETS tab from the main top navigation bar. From there you can use the faceted navigation provided under the filter to go to: Look & Feels > Branded Systems > Groundbreakers > Taglines Or copy the URL below and paste into a browser that functions properly with Media Manager: Oracle Developer Tagline https://omm.us.oracle.com:11443/otmm/ux-html/?p=collection%2Furl_selection%2F30810053
  • #5: Slate : Markdown and Ruby
  • #7: https://hub.packtpub.com/implementing-an-api-design-first-approach-for-building-apis/
  • #8: https://hub.packtpub.com/implementing-an-api-design-first-approach-for-building-apis/
  • #9: Log in to Media Manager (https://omm.us.oracle.com) using your SSO and select the ASSETS tab from the main top navigation bar. From there you can use the faceted navigation provided under the filter to go to: Look & Feels > Branded Systems > Groundbreakers > Taglines Or copy the URL below and paste into a browser that functions properly with Media Manager: Oracle Developer Tagline https://omm.us.oracle.com:11443/otmm/ux-html/?p=collection%2Furl_selection%2F30810053
  • #10: Log in to Media Manager (https://omm.us.oracle.com) using your SSO and select the ASSETS tab from the main top navigation bar. From there you can use the faceted navigation provided under the filter to go to: Look & Feels > Branded Systems > Groundbreakers > Taglines Or copy the URL below and paste into a browser that functions properly with Media Manager: Oracle Developer Tagline https://omm.us.oracle.com:11443/otmm/ux-html/?p=collection%2Furl_selection%2F30810053
  • #11: Slate : Markdown and Ruby
  • #13: Log in to Media Manager (https://omm.us.oracle.com) using your SSO and select the ASSETS tab from the main top navigation bar. From there you can use the faceted navigation provided under the filter to go to: Look & Feels > Branded Systems > Groundbreakers > Taglines Or copy the URL below and paste into a browser that functions properly with Media Manager: Oracle Developer Tagline https://omm.us.oracle.com:11443/otmm/ux-html/?p=collection%2Furl_selection%2F30810053
  • #14: Log in to Media Manager (https://omm.us.oracle.com) using your SSO and select the ASSETS tab from the main top navigation bar. From there you can use the faceted navigation provided under the filter to go to: Look & Feels > Branded Systems > Groundbreakers > Taglines Or copy the URL below and paste into a browser that functions properly with Media Manager: Oracle Developer Tagline https://omm.us.oracle.com:11443/otmm/ux-html/?p=collection%2Furl_selection%2F30810053
  • #15: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #16: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #17: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #18: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #19: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #20: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #21: The blueprint starts with a metadata section. In this case we have specified that FORMAT has the value of 1A. The format keyword denotes the version of the API Blueprint. The first heading in the blueprint serves as the name of your API, which in this case is "Polls". Headings start with one or more # symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of # you use will determine the level of the heading. Following the heading is a description of the API. You may use further headings to break up the description section.
  • #51: This is a Section Header without Picture, and can also be used as a Q and A slide.