Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BAD_REQUEST = 400 をめぐる問い。マジックナンバーは可読性を下げるのか? / bad request is 400

qsona
August 03, 2019

BAD_REQUEST = 400 をめぐる問い。マジックナンバーは可読性を下げるのか? / bad request is 400

すえなみチャンス暑気払い

qsona

August 03, 2019
Tweet

More Decks by qsona

Other Decks in Technology

Transcript

  1. BAD_REQUEST = 400 ΛΊ͙Δ໰͍ɻ
    ϚδοΫφϯόʔ͸ՄಡੑΛ

    Լ͛Δͷ͔?
    @qsona (FiNC Technologies)

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. ࠓ೔࿩͢͜ͱ
    • BAD_REQUEST = 400 ͷྫ͔Β

    ϚδοΫφϯόʔͷੋඇͳͲʹ๲Β·ͤͯٞ࿦͢Δ
    • ͦͷաఔͰɺʮઃܭͷݴޠԽʯͷॏཁ͞Λ

    ͋ΒͨΊͯڧௐ͍ͨ͠

    View Slide

  7. ࠓ೔ͷείʔϓ֎
    • ͦ΋ͦ΋εςʔλείʔυ

    Λ࢖͍෼͚Δ΂͖͔
    • ྫ: validation error ͷͱ͖ʹ

    400 BAD REQUEST

    Λฦ͢΂͖͔Ͳ͏͔
    • ͜Ε͸͜ΕͰਂ͍࿩

    View Slide

  8. ૝૾ͯͨ͠΍ͭ

    View Slide

  9. ͳΜͱͳ͍͘΍ͳίʔυ

    View Slide

  10. ࡶͳࢦఠ
    • BAD REQUEST ͕ 400ͱ͔

    ͩΕͰ΋஌ͬͯΔΑͶ?
    • ࡶͳݴޠԽ

    View Slide

  11. ॏཁͳࢦఠ

    View Slide

  12. ΫΠζ
    • HTTPεςʔλείʔυ 409

    View Slide

  13. ΫΠζ
    • HTTPεςʔλείʔυ 409 ͸ҎԼͷ͏ͪͲΕ
    • PERMANENT REDIRECT
    • INSUFFICIENT STORAGE
    • CONFLICT
    • PROCESSING

    View Slide

  14. ΫΠζ
    • HTTPεςʔλείʔυ 409 ͸ҎԼͷ͏ͪͲΕ
    • 308 PERMANENT REDIRECT
    • 507 INSUFFICIENT STORAGE
    • 409 CONFLICT
    • 102 PROCESSING

    View Slide

  15. ྑ͍ࢦఠ

    View Slide

  16. վળҊ

    View Slide

  17. ࿦఺
    • ϚδοΫφϯόʔͷੋඇ
    • HTTPεςʔλείʔυΛ਺஋Ͱϕλॻ͖͢Δ͜ͱͷੋඇ

    View Slide

  18. ϚδοΫφϯόʔΛΊ͙Δ࿦఺
    • "Մಡੑ͕ѱ͍" (not readable)
    • ࡶͳݴޠԽ

    View Slide

  19. ϚδοΫφϯόʔͷՄಡੑ͕௿͍ͱ͸
    • Կʹର͢Δ਺஋͔͕ͩΘ͔Βͳ͍Α
    • ਺஋ࣗମͷࠜڌ(ଥ౰ੑ)͕Θ͔Βͳ͍Α
    • ڞ௨Խ͞Εͯͳ͍Α
    • ϚδοΫφϯόʔ͸ѱɺ໰౴ແ༻

    View Slide

  20. Կʹର͢Δ਺஋͔͕ͩΘ͔Βͳ͍Α
    • price * 1.08
    • ͦ΋ͦ΋ 1.08 ͕͜͜ʹग़͖͍ͯͯΔཧ༝͕Θ͔Βͳ͍
    • ਺஋ԋࢉͯ͠Δͱ͖ʹى͖͕ͪ

    View Slide

  21. Կʹର͢Δ਺஋͔͕ͩΘ͔Βͳ͍Α
    • ؔ਺(ϝιου)ݺͼग़͠ʹ਺஋Λ౉͢ͱ͖͸ɺ

    ͜ͷ໰୊͸ى͜Βͳ͍
    • ϝιουఆٛΛݟΕ͹Θ͔ΔͷͰ
    • લͷྫͰ͸ TAX_RATE ఆ਺Λఆٛ͢ΔΑΓ΋ɺ(ྫ͑͹)

    price_included_tax(base_price) ϝιουΛఆٛͨ͠΄͏͕͍͍

    View Slide

  22. ਺஋ࣗମͷࠜڌ(ଥ౰ੑ)͕Θ͔Βͳ͍Α
    • 409 ͕εςʔλείʔυΛදͯ͠Δͷ͸Θ͔Δ͕ɺ

    ͳͥ 409 ͳͷ͔͕Θ͔Βͳ͍
    • ׂͱϚΠφʔͳ໰୊ͳؾ͕ͯ͠Δɻ͜Εʹ͍ͭͯ͸ޙड़

    View Slide

  23. ڞ௨Խ͞Εͯͳ͍Α
    • ڞ௨Խ͢΂͖ͳΒͯ͘͠Ε
    • Ͳ͏͍͏࣌ʹڞ௨Խ͢΂͖͔͸Θ͔Δͳ?

    View Slide

  24. const LIMIT = 10; ໰୊

    View Slide

  25. const LIMIT = 10; ໰୊
    • Լͷ͏ͪ1ͭ΋ղܾ͍ͯ͠ͳ͍
    • Կʹର͢Δ਺஋͔͕ͩ

    Θ͔Βͳ͍Α
    • ਺஋ࣗମͷࠜڌ(ଥ౰ੑ)͕

    Θ͔Βͳ͍Α
    • ڞ௨Խ͞Εͯͳ͍Α

    View Slide

  26. Ξϯέʔτ

    View Slide

  27. ๻ͷதͰͷਖ਼ղ

    View Slide

  28. View Slide

  29. ֮͑Δඞཁ͸ͳ͍
    • 409 => conflict ͸άάΕ͹ҰॠͰग़ͯ͘Δ
    • ඞཁʹͳΔස౓ͷ໰୊
    • ස౓͕ଟ͍ͳΒ͔֬ʹ໰୊͚ͩͲɺ

    ͦΜͳʹ͠ΐͬͪΎ͏͋Δ...?

    View Slide

  30. ͲͪΒͷ৘ใྔ͕େࣄ͔?
    • 409
    • ࢓༷ɺΠϯλʔϑΣΠε
    • conflict
    • ҙຯɺ࣮૷ʹ͍ۙ

    View Slide

  31. View Slide

  32. ΠϯλʔϑΣΠεͷॏཁੑ
    • ྫ͑͹ OpenAPI 3
    • Web API ͷ࢓༷ͷ

    υΩϡϝϯτ
    • ͜͜ʹ͸ `409` ͱ਺஋Ͱ
    ॻ͘

    View Slide

  33. 4xx = Client Error
    • 409 ͩͬͨΒͱΓ͋͑ͣ Client Errorͩͱ͍͏ͱ͜Ζ·Ͱ͸

    Θ͔Δ
    • Conflict ͬͯݴΘΕͯ΋Α͘Θ͔Βͳ͘ͳ͍...?

    View Slide

  34. ·ͱΊ
    • ؒҧ͍ͳ͘࢒೦ͳίʔυ͸ݴ͍ա͗ͩͬͨɺ͢·Μ
    • ϚδοΫφϯόʔ͸࠷ߴ
    • ઃܭ͸ݴޠԽΛ͍ͯ͜͠͏
    • ͑͢ͳΈνϟϯε͸ࣗΒͷखͰ௫Ή΋ͷ

    View Slide

  35. View Slide

  36. View Slide