Slide 1

Slide 1 text

Schema-First API Design with OpenAPI / Swagger Yos Riady yos.io bit.ly/2uDyaSN

Slide 2

Slide 2 text

API Design process What is OpenAPI? Introduction Design Spec Tools Conclusion Writing OpenAPI specs Summary and further learning Tooling around OpenAPI

Slide 3

Slide 3 text

You’re building an API

Slide 4

Slide 4 text

● You need to: ○ Update the server implementation to support the new feature. ○ Update all client libraries / SDKs. ○ Update the documentation. ● All the above must be consistent with each other. ● Also, frontend teams are blocked until your backend API is complete. Adding a new feature to the API

Slide 5

Slide 5 text

Is there a better way to do this?

Slide 6

Slide 6 text

Schema-First API Design The Schema-first API design approach means writing your API definition first in one of many API Specification languages before writing any code.

Slide 7

Slide 7 text

Iterate faster in teams Benefits of the Schema-First Approach Generate Artifacts Generate API Tests You can generate mock services for clients to work with, even before backend components are ready. Your API Specification can be used to generate functional tests for the API. Your API Specification can be used to generate SDKs, documentation, and server scaffolds.

Slide 8

Slide 8 text

API Specification Languages

Slide 9

Slide 9 text

API Design process What is OpenAPI? Introduction Design Spec Tools Conclusion Writing OpenAPI specs Summary and further learning Tooling around OpenAPI

Slide 10

Slide 10 text

OpenAPI / Swagger

Slide 11

Slide 11 text

What’s in an OpenAPI Specification? ● General information about the API ● Available paths e.g. /resources ○ Available operations on each path e.g. GET /resources/{id} ○ input & output for each operation

Slide 12

Slide 12 text

openapi: 3.0.0 info: title: Sample API description: Optional multiline or single-line description version: 0.1.9 paths: /users: get: summary: Returns a list of users. description: Optional extended description in CommonMark or HTML. responses: '200': # status code description: A JSON array of user names content: application/json: schema: type: array items: type: string

Slide 13

Slide 13 text

editor.swagger.io

Slide 14

Slide 14 text

Writing an OpenAPI Specification: openapi openapi: 3.0.0 The semantic version number of the OpenAPI Specification version that the OpenAPI document uses.

Slide 15

Slide 15 text

The info section provides general information about the API. info: title: Sample Pet Store App version: 1.0.1 description: This is a sample server for a pet store. termsOfService: http://example.com/terms/ contact: name: API Support url: http://www.example.com/support email: [email protected] license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html Writing an OpenAPI Specification: info

Slide 16

Slide 16 text

Writing an OpenAPI Specification: paths The paths section contains the endpoints such as /products and operations are the HTTP methods such as GET, POST, DELETE paths: /products/{id}: get: /orders: post:

Slide 17

Slide 17 text

paths: /products/{id}: get: operationId: getProductById parameters: - name: id in: path description: Product ID required: true schema: type: integer format: int64 responses: '200': content: application/json: schema: $ref: '#/components/schemas/Product' Writing an OpenAPI Specification: paths Each operation documents any parameters for the operation, the different kinds of responses, and other metadata.

Slide 18

Slide 18 text

Writing an OpenAPI Specification: components components: schemas: # Schema object definition Pet: type: object properties: name: type: string petType: type: string required: - name - petType The components section lets you define common data structures used in your API. They can be referenced via $ref whenever a schema is required: $ref: '#/components/schemas/Pet'

Slide 19

Slide 19 text

editor.swagger.io

Slide 20

Slide 20 text

And more! There are tons of libraries and frameworks that support the OpenAPI ecosystem. Swagger Codegen Generates server stubs and client libraries in over 40 languages / platforms. Tooling around OpenAPI Swagger UI Generate interactive API documentation that lets users try out API calls in the browser.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

API Design process What is OpenAPI? Introduction Design Spec Tools Conclusion Writing OpenAPI specs Summary and further learning Tooling around OpenAPI

Slide 23

Slide 23 text

Schema-First API Design with OpenAPI / Swagger Yos Riady yos.io bit.ly/2uDyaSN

Slide 24

Slide 24 text

Q&A