Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Playing with tapirs Scala Vienna UserGroup
Search
Michele Vigilante
November 21, 2019
Programming
20
0
Share
Playing with tapirs Scala Vienna UserGroup
A presentation about the tapir library from softwaremill
Michele Vigilante
November 21, 2019
Other Decks in Programming
See All in Programming
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
2.5k
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
2
270
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
310
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
340
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
OSもどきOS
arkw
0
400
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.5k
Lessons from Spec-Driven Development
simas
PRO
0
130
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
230
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
Inside Stream API
skrb
1
620
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
790
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Google's AI Overviews - The New Search
badams
0
1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
440
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
590
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
tAPIr Playing with Tapirs Michele Vigilante @_zZKato: Twitter
Agenda • Conventional API definitions • What is tapir •
Why tapir • Inputs and Outputs • Capabilities • Live Demo - Customer Application
Conventional Endpoint definitions • Routes file ◦ No type safety
◦ Difficult to maintain • Spring annotations ◦ limited type safety ◦ **magic**
What is Tapir? • tapir -> Typed API descRiptions •
created by Adam Warski from Softwaremill • define HTTP endpoints as Scala values • gain for free via interpretation ◦ [framework] Route ◦ OpenAPI documentation ◦ sttp API client
Supported frameworks • akka-http • finatra • http4s • playframework
(Soon™) • BYOI -> bring your own interpreter
Why tapir • Full type safety • No magic, just
simple code • framework agnostic • free server, client and docs • very “ergonomic”
Inputs and Outputs Endpoint[I, E, O, _] tapir Endpoint type
I Inputs E Error Outputs O Outputs
Capabilities • Custom Types (provided Codec) • Input/Output validation •
Authentication -> bearer token / basic / OAuth2 • Payload -> JSON / URL-encoded Forms / Multipart Forms etc. • Streaming
Live Demo
Q & A Thanks for your attention! • Links ◦
https://www.firstbird.com/en/ ◦ https://tapir-scala.readthedocs.io/en/latest/index.html ◦ https://github.com/softwaremill/tapir ◦ https://github.com/zZKato/tapir-live-demo-scala-usergroup