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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
qsona
August 03, 2019
Technology
4.9k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BAD_REQUEST = 400 をめぐる問い。マジックナンバーは可読性を下げるのか? / bad request is 400
すえなみチャンス暑気払い
qsona
August 03, 2019
More Decks by qsona
See All by qsona
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
4
610
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
28
9k
3 Practices about Service-to-Service GraphQL Ruby Client
qsona
1
1.2k
いかにして GraphQL を組織に導入するか (新規開発編) / how we introduce GraphQL on scratch development
qsona
6
4.2k
Well-organized Transaction Script - リファクタリングの妥協的手法 -
qsona
4
1.6k
GraphQL と Prisma から考える次のN年を見据えた技術選定 / Architecture decision for the next N years at StudySapuri
qsona
25
16k
最高のマスターデータ管理手法考察 & VSCode Extension を活用した話 / developing masterdata management tool by using vscode extension
qsona
9
8.4k
GraphQL を活用したスキーマ駆動開発の実践 / schema-driven development with GraphQL
qsona
6
7.6k
GraphQL を利用したアーキテクチャの勘所 / Architecture practices with GraphQL
qsona
37
18k
Other Decks in Technology
See All in Technology
小粒でもパワフルなJS Runtime Antjsについて
comamoca
0
110
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
110
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
250
システム思考で問題に対処する
yussak
0
350
AIのためのEthernet技術動向 (SerDes)
markunet
1
230
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
160
ホームラボ紹介
y_sera15
0
210
FDEの心得
noriakioji
5
6.3k
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
140
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
560
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
260
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Amusing Abliteration
ianozsvald
1
250
We Have a Design System, Now What?
morganepeng
55
8.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Designing Experiences People Love
moore
143
24k
Balancing Empowerment & Direction
lara
6
1.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.4k
Documentation Writing (for coders)
carmenintech
77
5.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