this post was submitted on 30 Jun 2024
153 points (93.2% liked)

Programmer Humor

32041 readers
1429 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

Meme transcription: Panel 1. Two images of JSON, one is the empty object, one is an object in which the key name maps to the value null. Caption: “Corporate needs you to find the difference between this picture and this picture”

Panel 2. The Java backend dev answers, “They’re the same picture.”

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 2 months ago (3 children)

Imagine you're writing a CRUD API, which is pretty common.
If null attributes aren't included in the payload, and someone does an update (typically a PATCH), how do you know which fields should be nulled out and which should be ignored?

I agree for many cases the two are semantically equivalent, but it's common enough to not have them be equivalent that I'm surprised that it causes arguments

[–] [email protected] 1 points 2 months ago* (last edited 2 months ago) (2 children)

For an API there should always be a version parameter/endpoint, imho.

Edit for further context: Ideally, a parameter.

[–] [email protected] 2 points 2 months ago* (last edited 2 months ago) (1 children)

I wasn't taking about new fields. I was talking about resource partial updates (eg PATCH, or commonly the U in CRUD).

If you just want to update a single field on a resource with 100 fields, rather than GETting the entire resource, updating the single field, and PUTting whole thing back, just do a PATCH with the single field.

Likewise if you're POSTing a resource that has nullable fields, but the default value isn't null, how do you indicate that you want the default value for a given field? Do you have to first query some metadata API? That doesn't seem ideal, when this existing pattern exists

[–] [email protected] 3 points 2 months ago* (last edited 2 months ago)

Those are two very fair points - I agree.