Slide 1

Slide 1 text

O p e n A P I Ͱ A P I G a t e w a y ͷ Ϟ ο Ϋ A P I Λ ࡞ Γ ɺ ί ʔ υ ෆ ཁ ͷ A P I ςε τπ ʔϧ D re d d Ͱ ςε τ 2 0 1 7 . 1 0 . 2 We A re J a v a S c r i p t e r s ! # 1 2 @ M i c ro s o f t

Slide 2

Slide 2 text

ࠓճͷίʔυ https://github.com/boiyaa/ts-examples/tree/master/ swagger-api-gateway-mock WeJSͳͷʹਃ͠༁ͳ͍ͷͰ͕͢ɺ ࠓճJSཁૉ͕JSON͘Β͍͔͋͠Γ·ͤΜɻ

Slide 3

Slide 3 text

YA M A M O T O ’s P ro f i l e • @boiyaa
 (Twitter: @boiyaaaaaa) • ถFacebookΤϯδχΞ • ͷఋΛ࣋ͭߴଔΤϯδχΞ • ύʔιϧϓϩηεˍςΫϊϩ δʔ (PPT)

Slide 4

Slide 4 text

ϑϩϯτΤϯυ։ൃΛ͍ͯ͠Δͱɺ όοΫΤϯυΑΓઌʹը໘͕࣮૷Ͱ͖Δ͜ͱ͸Α͋͘Δ ϞοΫͷAPIΛࣗ෼Ͱ؆୯ʹ࡞ΕͨΒ

Slide 5

Slide 5 text

ͦΜͳΞʔόϯͰελΠϦογϡͳςοΫΛ঺հ

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

RESTful APIهड़࢓༷
 ˍ
 υΩϡϝϯτ΍ίʔυΛ࡞੒͢ΔͨΊͷπʔϧ܈ ݱࡏ͸OpenAPI Specification(OAS)ͱͯ͠
 ඪ४ԽΛ໨ࢦ͍ͯ͠Δ

Slide 8

Slide 8 text

Amazon API Gateway

Slide 9

Slide 9 text

ϓϥΠϕʔτͳΞϓϦέʔγϣϯ΍ɺ֎෦αʔϏεͳͲ Λ౷߹ͯ͠WebͷೖΓޱΛఏڙ͢ΔSaaS OASυΩϡϝϯτͰϞοΫAPIΛ࡞Δ͜ͱ΋Ͱ͖Δ

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

ଟ਺ͷݴޠʹରԠͨ͠APIςεςΟϯάπʔϧ OASυΩϡϝϯτͰݕূͰ͖Δ

Slide 12

Slide 12 text

OASܗࣜͷAPIυΩϡϝϯτ1ͭॻ͚ͩ͘Ͱɺ
 APIͷSever, Client, Gateway, Testing͕Ͱ͖Δ

Slide 13

Slide 13 text

͜Μͳߏ੒Ͱࢼͯ͠Έͨ s w a g g e r. j s o n A m a z o n A P I G a t e w a y APIఆ͔ٛΒ
 ϞοΫAPI࡞੒ APIఆٛͰ
 ςετ

Slide 14

Slide 14 text

S w a g g e r Ͱ A P I G a t e w a y Λ ࡞ Δ ͱΓ͋͑ͣී௨ʹॻ͍ͯΠϯϙʔτ͢Ε͹ɺ
 Ϧιʔεͱϝιου͸࡞ΒΕΔ͕ɺ
 APIͱͯ͠ಈ͔͢ʹ͸ઃఆ͕଍Γͳ͍ ↓ ϝιουఆٛʹAPI Gateway֦ு࢓༷ͷ
 x-amazon-apigateway-integrationΛ௥Ճ͢Δ

Slide 15

Slide 15 text

s w a g g e r. j s o n " / a r t i c l e s " : { " g e t " : { " t a g s " : [ " A r t i c l e " ] , " s u m m a r y " : " L i s t a r t i c l e s " , " r e s p o n s e s " : { " 2 0 0 " : { " d e s c r i p t i o n " : " s u c c e s s f u l o p e r a t i o n " , " s c h e m a " : { " t y p e " : " a r r a y " , " i t e m s " : { " $ r e f " : " # / d e f i n i t i o n s / A r t i c l e " } } } } , " x - a m a z o n - a p i g a t e w a y - i n t e g r a t i o n " : { " t y p e " : " m o c k " , " r e q u e s t T e m p l a t e s " : { " a p p l i c a t i o n / j s o n " : " { \ " s t a t u s C o d e \ " : 2 0 0 } " } , " r e s p o n s e s " : { " d e f a u l t " : { " s t a t u s C o d e " : " 2 0 0 " , " r e s p o n s e T e m p l a t e s " : { " a p p l i c a t i o n / j s o n " : " [ { \ " i d \ " : 1 , \ " t i t l e \ " : \ " a r t i c l e 1 \ " } ] " } } } } } , ී௨ͷఆٛ API Gateway༻ ͷఆٛ

Slide 16

Slide 16 text

Ϟ ο Ϋ A P I Λ ୟ ͍ͯ Έ Δ $ c u r l - i h t t p s : / / a p i . e x a m p l e . c o m / a r t i c l e s H T T P / 1 . 1 2 0 0 O K C o n t e n t - T y p e : a p p l i c a t i o n / j s o n C o n t e n t - L e n g t h : 3 4 C o n n e c t i o n : k e e p - a l i v e D a t e : S u n , 0 1 O c t 2 0 1 7 2 2 : 3 1 : 4 3 G M T x - a m z n - R e q u e s t I d : X - C a c h e : M i s s f r o m c l o u d f r o n t V i a : 1 . 1 X - A m z - C f - I d : [ { " i d " : 1 , " t i t l e " : " a r t i c l e 1 " } ]

Slide 17

Slide 17 text

D re d d Λ Π ϯε τ ʔϧ ͢ Δ $ n p m i n s t a l l - g d r e d d D re d d ͸ C o ff e e S c r i p t ੡ ※ ຊ ೔ ། Ұ ͷ J S ཁ ૉ

Slide 18

Slide 18 text

D re d d Λ ࣮ ߦ ͢ Δ $ d r e d d s w a g g e r . j s o n h t t p s : / / a p i . e x a m p l e . c o m i n f o : B e g i n n i n g D r e d d t e s t i n g . . . p a s s : G E T ( 2 0 0 ) / a r t i c l e s d u r a t i o n : 1 4 3 m s c o m p l e t e : 1 p a s s i n g , 0 f a i l i n g , 0 e r r o r s , 0 s k i p p e d , 1 t o t a l c o m p l e t e : T e s t s t o o k 1 4 3 m s

Slide 19

Slide 19 text

ϋϚ ͬ ͨ ͱ ͜ Ζ SwaggerͰAPI Gatewayͷ204ฦ͢APIΛ࡞Δͱɺ
 ςετಈ͔͢ͷ͕େมͩͬͨ

Slide 20

Slide 20 text

A P I G a t e w a y ͸ 2 0 4 Ͱ ΋ C o n t e n t - Ty p e Λ ฦ ͢ 
 σ ϑ Υϧ τ ͷ a p p l i c a t i o n / j s o n ͷ · · ͩ ͱ J S O N ύʔε Τϥ ʔ ͕ ى ͖ Δ $ d r e d d s w a g g e r . j s o n h t t p s : / / a p i . e x a m p l e . c o m f a i l : b o d y : R e a l b o d y " C o n t e n t - T y p e " h e a d e r i s " a p p l i c a t i o n / j s o n " b u t b o d y i s n o t a p a r s a b l e J S O N . P a r s e e r r o r o n l i n e 1 : ^ E x p e c t i n g ' S T R I N G ' , ' N U M B E R ' , ' N U L L ' , ' T R U E ' , ' F A L S E ' , ' { ' , ' [ ' , g o t ' E O F '

Slide 21

Slide 21 text

υ Ω ϡ ϝ ϯ τ ͷ ํ ๏ Ͱ C o n t e n t - Ty p e Λ t e x t / p l a i n ʹ ม ߋ ͢ Δ ͱ ɻ ɻ " p r o d u c e s " : [ " t e x t / p l a i n " ] , " r e s p o n s e s " : { " 2 0 4 " : { " d e s c r i p t i o n " : " s u c c e s s f u l o p e r a t i o n " , " s c h e m a " : { " $ r e f " : " # / d e f i n i t i o n s / E m p t y " } } } , " x - a m a z o n - a p i g a t e w a y - i n t e g r a t i o n " : { " t y p e " : " m o c k " , " r e q u e s t T e m p l a t e s " : { " a p p l i c a t i o n / j s o n " : " { \ " s t a t u s C o d e \ " : 2 0 4 } " } , " r e s p o n s e s " : { " d e f a u l t " : { " s t a t u s C o d e " : " 2 0 4 " , " r e s p o n s e T e m p l a t e s " : { " t e x t / p l a i n " : " " } } } }

Slide 22

Slide 22 text

D re d d ͸ s c h e m a ͕ ઃ ఆ ͞ Εͯ ͍ Δ ͱ a p p l i c a t i o n / j s o n Ͱ ͳ ͍ ͱ ςε τ Ͱ ͖ ͳ ͍ $ d r e d d s w a g g e r . j s o n h t t p s : / / a p i . e x a m p l e . c o m f a i l : b o d y : C a n ' t v a l i d a t e r e a l m e d i a t y p e ' t e x t / p l a i n ' a g a i n s t e x p e c t e d m e d i a t y p e ' a p p l i c a t i o n / s c h e m a + j s o n ' .

Slide 23

Slide 23 text

ϔο μ Ϛ ο ϐ ϯ ά Ͱ t e x t / p l a i n ʹ ม ߋ ͢ Δ ɻ " r e s p o n s e s " : { " 2 0 4 " : { " d e s c r i p t i o n " : " s u c c e s s f u l o p e r a t i o n " , " h e a d e r s " : { " C o n t e n t - T y p e " : { " t y p e " : " s t r i n g " , " x - e x a m p l e " : " t e x t / p l a i n " } } } } , " x - a m a z o n - a p i g a t e w a y - i n t e g r a t i o n " : { " t y p e " : " m o c k " , " r e q u e s t T e m p l a t e s " : { " a p p l i c a t i o n / j s o n " : " { \ " s t a t u s C o d e \ " : 2 0 4 } " } , " r e s p o n s e s " : { " d e f a u l t " : { " s t a t u s C o d e " : " 2 0 4 " , " r e s p o n s e P a r a m e t e r s " : { " m e t h o d . r e s p o n s e . h e a d e r . C o n t e n t - T y p e " : " ' t e x t / p l a i n ' " } , " r e s p o n s e T e m p l a t e s " : { " t e x t / p l a i n " : " " } } } }

Slide 24

Slide 24 text

Α ͏ ΍ ͘ ௨ Δ $ d r e d d s w a g g e r . j s o n h t t p s : / / a p i . e x a m p l e . c o m i n f o : B e g i n n i n g D r e d d t e s t i n g . . . p a s s : G E T ( 2 0 0 ) / a r t i c l e s d u r a t i o n : 1 4 3 m s p a s s : P O S T ( 2 0 0 ) / a r t i c l e s d u r a t i o n : 6 3 m s p a s s : O P T I O N S ( 2 0 4 ) / a r t i c l e s d u r a t i o n : 1 1 9 m s p a s s : D E L E T E ( 2 0 4 ) / a r t i c l e s / 1 d u r a t i o n : 5 6 m s c o m p l e t e : 4 p a s s i n g , 0 f a i l i n g , 0 e r r o r s , 0 s k i p p e d , 4 t o t a l c o m p l e t e : T e s t s t o o k 3 8 9 m s

Slide 25

Slide 25 text

· ͱ Ί OAS͸ׂͱ͙͢ॻ͚Δ͕ɺAPI Gateway࡞ΔͳΒAPI Gateway֦ுͷ࢓༷΋஌Βͳ͍ͱ͍͚ͳ͍͔Βɺ
 ݁ہAPI Gatewayͷ࢓૊ΈΛ஌Δඞཁ͸͋Δɻ

Slide 26

Slide 26 text

T h a n k y o u