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

What's hot

Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
Oracle Korea
 
Apic dc api deep dive
Apic dc api deep dive Apic dc api deep dive
Apic dc api deep dive
Cisco DevNet
 
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
MySQL InnoDB Cluster / ReplicaSet - Making Provisioning & Troubleshooting as ...
Miguel Araújo
 
Jakarta EE: Today and Tomorrow
Jakarta EE: Today and TomorrowJakarta EE: Today and Tomorrow
Jakarta EE: Today and Tomorrow
Dmitry Kornilov
 
Spring - CDI Interop
Spring - CDI InteropSpring - CDI Interop
Spring - CDI Interop
Ray Ploski
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
Edward Burns
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
Normandy JUG
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!
Reza Rahman
 
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
Oracle APEX 기초 워크샵 - 실습 가이드 문서:  Part 2 (2/2)Oracle APEX 기초 워크샵 - 실습 가이드 문서:  Part 2 (2/2)
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
Taewan Kim
 
CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
Kenneth Peeples
 
Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실
Taewan Kim
 
Web protocols for java developers
Web protocols for java developersWeb protocols for java developers
Web protocols for java developers
Pavel Bucek
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
David Delabassee
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
glassfish
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
David Delabassee
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
Reza Rahman
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
Shekhar Gulati
 
WebSockets in Enterprise Applications
WebSockets in Enterprise ApplicationsWebSockets in Enterprise Applications
WebSockets in Enterprise Applications
Pavel Bucek
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
Pavel Bucek
 
Puppet devops wdec
Puppet devops wdecPuppet devops wdec
Puppet devops wdec
Wojciech Dec
 

What's hot (20)

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

Similar to Api design and prototype

oracle-apac-developers-meetup-2-building-api-with-apiary-slides
oracle-apac-developers-meetup-2-building-api-with-apiary-slidesoracle-apac-developers-meetup-2-building-api-with-apiary-slides
oracle-apac-developers-meetup-2-building-api-with-apiary-slides
Boopathy Balasubramanian
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_
aioughydchapter
 
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Edureka!
 
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish AbramsGraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
Oracle Developers
 
Separation of Concerns through APIs: the Essence of #SmartDB
Separation of Concerns through APIs: the Essence of #SmartDBSeparation of Concerns through APIs: the Essence of #SmartDB
Separation of Concerns through APIs: the Essence of #SmartDB
Toon Koppelaars
 
REST API Doc Best Practices
REST API Doc Best PracticesREST API Doc Best Practices
REST API Doc Best Practices
Marta Rauch
 
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
Edureka!
 
10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기
DongHee Lee
 
API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17
Phil Wilkins
 
Digital Authoring with Asciidoc(tor) and AsciidocFX
Digital Authoring with Asciidoc(tor) and AsciidocFXDigital Authoring with Asciidoc(tor) and AsciidocFX
Digital Authoring with Asciidoc(tor) and AsciidocFX
Rahman USTA
 
Modern Application Development for the Enterprise
Modern Application Development for the EnterpriseModern Application Development for the Enterprise
Modern Application Development for the Enterprise
Juarez Junior
 
Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data Services
Chris Muir
 
Oracle meetup kubernetes_171118
Oracle meetup kubernetes_171118Oracle meetup kubernetes_171118
Oracle meetup kubernetes_171118
Oracle Korea
 
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
David Buck
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
vasuballa
 
As Novidades do Java EE 8
As Novidades do Java EE 8As Novidades do Java EE 8
As Novidades do Java EE 8
Paulo Alberto Simoes ∴
 
Boost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIsBoost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIs
Marta Rauch
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Jupil Hwang
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
Pavan Kumar
 
Cloud Native Java:GraalVM
Cloud Native Java:GraalVMCloud Native Java:GraalVM
Cloud Native Java:GraalVM
Taewan alvin Kim
 

Similar to Api design and prototype (20)

oracle-apac-developers-meetup-2-building-api-with-apiary-slides
oracle-apac-developers-meetup-2-building-api-with-apiary-slidesoracle-apac-developers-meetup-2-building-api-with-apiary-slides
oracle-apac-developers-meetup-2-building-api-with-apiary-slides
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_
 
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
Java 9 New Features | Java Tutorial | What’s New in Java 9 | Java 9 Features ...
 
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish AbramsGraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
 
Separation of Concerns through APIs: the Essence of #SmartDB
Separation of Concerns through APIs: the Essence of #SmartDBSeparation of Concerns through APIs: the Essence of #SmartDB
Separation of Concerns through APIs: the Essence of #SmartDB
 
REST API Doc Best Practices
REST API Doc Best PracticesREST API Doc Best Practices
REST API Doc Best Practices
 
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
Django Rest Framework | How to Create a RESTful API Using Django | Django Tut...
 
10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기10thMeetup-20190420-REST API Design Principles 되새기기
10thMeetup-20190420-REST API Design Principles 되새기기
 
API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17
 
Digital Authoring with Asciidoc(tor) and AsciidocFX
Digital Authoring with Asciidoc(tor) and AsciidocFXDigital Authoring with Asciidoc(tor) and AsciidocFX
Digital Authoring with Asciidoc(tor) and AsciidocFX
 
Modern Application Development for the Enterprise
Modern Application Development for the EnterpriseModern Application Development for the Enterprise
Modern Application Development for the Enterprise
 
Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data Services
 
Oracle meetup kubernetes_171118
Oracle meetup kubernetes_171118Oracle meetup kubernetes_171118
Oracle meetup kubernetes_171118
 
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
OpenJDK 参加入門 [JJUG CCC 2017 Fall E2]
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
 
As Novidades do Java EE 8
As Novidades do Java EE 8As Novidades do Java EE 8
As Novidades do Java EE 8
 
Boost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIsBoost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIs
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
Cloud Native Java:GraalVM
Cloud Native Java:GraalVMCloud Native Java:GraalVM
Cloud Native Java:GraalVM
 

Recently uploaded

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 

Recently uploaded (20)

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 

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

  1. 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
  2. Slate : Markdown and Ruby
  3. https://hub.packtpub.com/implementing-an-api-design-first-approach-for-building-apis/
  4. https://hub.packtpub.com/implementing-an-api-design-first-approach-for-building-apis/
  5. 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
  6. 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
  7. Slate : Markdown and Ruby
  8. 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
  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. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  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. This is a Section Header without Picture, and can also be used as a Q and A slide.