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
510
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
28
8.7k
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
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
230
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
1
240
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
860
slog.Handlerのよくある実装ミス
sakiengineer
4
290
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
210
AWSで始める実践Dagster入門
kitagawaz
1
650
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
240
AI開発ツールCreateがAnythingになったよ
tendasato
0
130
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
250
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
990
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Gamification - CAS2011
davidbonilla
81
5.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Speed Design
sergeychernyshev
32
1.1k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
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