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
BAD_REQUEST = 400 をめぐる問い。マジックナンバーは可読性を下げるのか? / ...
Search
qsona
August 03, 2019
Technology
7
4.8k
BAD_REQUEST = 400 をめぐる問い。マジックナンバーは可読性を下げるのか? / bad request is 400
すえなみチャンス暑気払い
qsona
August 03, 2019
Tweet
Share
More Decks by qsona
See All by qsona
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
4
500
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
28
8.6k
3 Practices about Service-to-Service GraphQL Ruby Client
qsona
1
1k
いかにして GraphQL を組織に導入するか (新規開発編) / how we introduce GraphQL on scratch development
qsona
6
4.1k
Well-organized Transaction Script - リファクタリングの妥協的手法 -
qsona
4
1.5k
GraphQL と Prisma から考える次のN年を見据えた技術選定 / Architecture decision for the next N years at StudySapuri
qsona
25
14k
最高のマスターデータ管理手法考察 & VSCode Extension を活用した話 / developing masterdata management tool by using vscode extension
qsona
9
6.5k
GraphQL を活用したスキーマ駆動開発の実践 / schema-driven development with GraphQL
qsona
6
5.5k
GraphQL を利用したアーキテクチャの勘所 / Architecture practices with GraphQL
qsona
37
16k
Other Decks in Technology
See All in Technology
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
20k
Google Agentspaceを実際に導入した効果と今後の展望
mixi_engineers
PRO
3
810
Engineering Failure-Resilient Systems
infraplumber0
0
130
生成AI活用のROI、どう測る? DMM.com 開発責任者から学ぶ「AI効果検証のノウハウ」 / ROI of AI
i35_267
4
130
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
150
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
1
420
僕たちが「開発しやすさ」を求め 模索し続けたアーキテクチャ #アーキテクチャ勉強会_findy
bengo4com
0
2.6k
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
3
1.1k
GCASアップデート(202506-202508)
techniczna
0
210
マルチプロダクト×マルチテナントを支えるモジュラモノリスを中心としたアソビューのアーキテクチャ
disc99
1
660
Mackerel in さくらのクラウド
cubicdaiya
1
310
リモートワークで心掛けていること 〜AI活用編〜
naoki85
0
190
Featured
See All Featured
Balancing Empowerment & Direction
lara
2
570
The World Runs on Bad Software
bkeepers
PRO
70
11k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Done Done
chrislema
185
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
The Invisible Side of Design
smashingmag
301
51k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Adopting Sorbet at Scale
ufuk
77
9.5k
Transcript
BAD_REQUEST = 400 ΛΊ͙Δ͍ɻ ϚδοΫφϯόʔՄಡੑΛ Լ͛Δͷ͔? @qsona (FiNC Technologies)
None
None
None
None
ࠓ͢͜ͱ • BAD_REQUEST = 400 ͷྫ͔Β ϚδοΫφϯόʔͷੋඇͳͲʹΒ·ͤͯٞ͢Δ • ͦͷաఔͰɺʮઃܭͷݴޠԽʯͷॏཁ͞Λ ͋ΒͨΊͯڧௐ͍ͨ͠
ࠓͷείʔϓ֎ • ͦͦεςʔλείʔυ Λ͍͚Δ͖͔ • ྫ: validation error ͷͱ͖ʹ 400
BAD REQUEST Λฦ͖͔͢Ͳ͏͔ • ͜Ε͜ΕͰਂ͍
૾ͯͨͭ͠
ͳΜͱͳ͍͘ͳίʔυ
ࡶͳࢦఠ • BAD REQUEST ͕ 400ͱ͔ ͩΕͰͬͯΔΑͶ? • ࡶͳݴޠԽ
ॏཁͳࢦఠ
ΫΠζ • HTTPεςʔλείʔυ 409
ΫΠζ • HTTPεςʔλείʔυ 409 ҎԼͷ͏ͪͲΕ • PERMANENT REDIRECT • INSUFFICIENT
STORAGE • CONFLICT • PROCESSING
ΫΠζ • HTTPεςʔλείʔυ 409 ҎԼͷ͏ͪͲΕ • 308 PERMANENT REDIRECT •
507 INSUFFICIENT STORAGE • 409 CONFLICT • 102 PROCESSING
ྑ͍ࢦఠ
վળҊ
• ϚδοΫφϯόʔͷੋඇ • HTTPεςʔλείʔυΛͰϕλॻ͖͢Δ͜ͱͷੋඇ
ϚδοΫφϯόʔΛΊ͙Δ • "Մಡੑ͕ѱ͍" (not readable) • ࡶͳݴޠԽ
ϚδοΫφϯόʔͷՄಡੑ͕͍ͱ • Կʹର͢Δ͔͕ͩΘ͔Βͳ͍Α • ࣗମͷࠜڌ(ଥੑ)͕Θ͔Βͳ͍Α • ڞ௨Խ͞Εͯͳ͍Α • ϚδοΫφϯόʔѱɺແ༻
Կʹର͢Δ͔͕ͩΘ͔Βͳ͍Α • price * 1.08 • ͦͦ 1.08 ͕͜͜ʹग़͖͍ͯͯΔཧ༝͕Θ͔Βͳ͍ •
ԋࢉͯ͠Δͱ͖ʹى͖͕ͪ
Կʹର͢Δ͔͕ͩΘ͔Βͳ͍Α • ؔ(ϝιου)ݺͼग़͠ʹΛ͢ͱ͖ɺ ͜ͷى͜Βͳ͍ • ϝιουఆٛΛݟΕΘ͔ΔͷͰ • લͷྫͰ TAX_RATE ఆΛఆٛ͢ΔΑΓɺ(ྫ͑)
price_included_tax(base_price) ϝιουΛఆٛͨ͠΄͏͕͍͍
ࣗମͷࠜڌ(ଥੑ)͕Θ͔Βͳ͍Α • 409 ͕εςʔλείʔυΛදͯ͠ΔͷΘ͔Δ͕ɺ ͳͥ 409 ͳͷ͔͕Θ͔Βͳ͍ • ׂͱϚΠφʔͳͳؾ͕ͯ͠Δɻ͜Εʹ͍ͭͯޙड़
ڞ௨Խ͞Εͯͳ͍Α • ڞ௨Խ͖͢ͳΒͯ͘͠Ε • Ͳ͏͍͏࣌ʹڞ௨Խ͖͔͢Θ͔Δͳ?
const LIMIT = 10;
const LIMIT = 10; • Լͷ͏ͪ1ͭղܾ͍ͯ͠ͳ͍ • Կʹର͢Δ͔͕ͩ Θ͔Βͳ͍Α
• ࣗମͷࠜڌ(ଥੑ)͕ Θ͔Βͳ͍Α • ڞ௨Խ͞Εͯͳ͍Α
Ξϯέʔτ
ͷதͰͷਖ਼ղ
None
֮͑Δඞཁͳ͍ • 409 => conflict άάΕҰॠͰग़ͯ͘Δ • ඞཁʹͳΔසͷ • ස͕ଟ͍ͳΒ͔֬ʹ͚ͩͲɺ
ͦΜͳʹ͠ΐͬͪΎ͏͋Δ...?
ͲͪΒͷใྔ͕େࣄ͔? • 409 • ༷ɺΠϯλʔϑΣΠε • conflict • ҙຯɺ࣮ʹ͍ۙ
None
ΠϯλʔϑΣΠεͷॏཁੑ • ྫ͑ OpenAPI 3 • Web API ͷ༷ͷ υΩϡϝϯτ
• ͜͜ʹ `409` ͱͰ ॻ͘
4xx = Client Error • 409 ͩͬͨΒͱΓ͋͑ͣ Client Errorͩͱ͍͏ͱ͜Ζ·Ͱ Θ͔Δ
• Conflict ͬͯݴΘΕͯΑ͘Θ͔Βͳ͘ͳ͍...?
·ͱΊ • ؒҧ͍ͳ͘೦ͳίʔυݴ͍ա͗ͩͬͨɺ͢·Μ • ϚδοΫφϯόʔ࠷ߴ • ઃܭݴޠԽΛ͍ͯ͜͠͏ • ͑͢ͳΈνϟϯεࣗΒͷखͰ௫Ήͷ
None
None