1. Why validation comes before decoding

response → validation → decoding

Reason:

You should only decode valid data

If you skip validation:

server returns 404 / 500
↓
you try to decode
↓
crash / decoding error

Example

Server returns:

{ "error": "User not found" }

But you expect:

{ "name": "Zeeshan", "email": "..." }

Decoding fails


Correct flow

check statusCode (200–299)
↓
only then decode

Core idea

validation = "is this response usable?"
decoding = "convert usable data into model"