Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

API.html: the `Remove Properties` example calls `/api/set`, and `Patch Update` documents `null` as storing null

Aperta Adatta ai principianti
#311 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
88/100
Tipo di issue
Documentazione
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript
Ambito
api, documentation

Direzione di ricerca

Inizia in public/API.html dagli esempi Patch Update e Remove Properties, poi confronta la loro formulazione e gli URL con controllers/patchUpdate.js, controllers/patchUnset.js e routes/api-routes.js. Il lavoro è completato quando l’esempio di rimozione usa /api/unset, il comportamento di null è documentato come rimozione e gli esempi degli endpoint circostanti rimangono coerenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug documentation

Summary

Two PATCH sections of public/API.html contradict the controllers they document. Both are in the copy-paste path, and one of them documents the wrong endpoint entirely.

  • The Remove Properties Javascript example calls /api/set. The section documents /unset, its prose is right, and its payload is an unset payload — but the fetch URL is https://devstore.rerum.io/v1/api/set. Anyone copying the example sends a removal payload to the add-only endpoint.
  • Patch Update documents {"key": null} as storing null. It says the value "will be set to null instead of removing the property". controllers/patchUpdate.js deletes the key.

The third API.html error I found — the default of 10 records at line 506 — is already tracked in #305, so it is not repeated here.

Why this matters

The /unset example is the wrong endpoint, not a typo in prose. routes/patchUnset.js serves /api/unset (mounted at routes/api-routes.js:61), and GET /v1/api describes /unset as "PATCH - Update the body an existing object by removing an existing property." The example's own body — "existing_property": null with an "unmatched_property" noted as ignored — is exactly the unset contract described three lines above it. Sent to /api/set it is a silent no-op: controllers/patchSet.js keeps only keys that are not already present, so existing_property is filtered out, nothing survives, and the server returns the original object with a 200 and the same @id. The caller sees success and the property is still there.

Copy-paste is the documented path. These blocks are the worked examples for the endpoint, and they are extracted verbatim by downstream consumers. A tool of ours that builds a corpus from API.html ingested this example and learned /api/set as the endpoint for removing a property; that is our bug to fix on our side, but it is evidence that the block travels intact.

The null claim is inverted, and null is load-bearing for both endpoints. controllers/patchUpdate.js:58-63 branches on the value:

for (let k in objectReceived) {
    if (originalObject.hasOwnProperty(k)) {
        if (objectReceived[k] === null) {
            delete patchedObject[k]
        }
        else {
            patchedObject[k] = objectReceived[k]
        }
    }

So /patch with null removes the key. /unset requires null to remove anything at all (controllers/patchUnset.js:61-70), which Remove Properties states correctly. A reader who trusts Patch Update believes RERUM stores JSON nulls, which it never does through this route.

Affected lines

All line numbers at 8e4b673d.

File Line Current Should be
public/API.html 1413 fetch("https://devstore.rerum.io/v1/api/set", { in the Remove Properties example .../v1/api/unset
public/API.html 1249-1250 "If {"key":null} is submitted, the value for property "key" will be set to null instead of removing the property." the key is removed from the new version

Proposed change

  • API.html:1413 — change the URL to https://devstore.rerum.io/v1/api/unset. Nothing else in the block needs to move; the payload and the surrounding prose already describe /unset.
  • API.html:1249-1250 — replace with a sentence matching the controller, e.g. "If {"key":null} is submitted, property key is removed from the resulting record. To change a value, send the new value; to add a key that does not exist yet, use /set."
  • Worth a pass over the other jsExample blocks for the same class of error: each example's URL should be checked against the endpoint its section documents. These two were found by diffing the examples against the controllers rather than by reading the page.
Lingua principale
JavaScript
Stelle
3
Fork
6
Merge medio
4g 9h
PR unite (30g)
5

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CenterForDigitalHumanities/rerum_server_nodejs

Tutte le issue di CenterForDigitalHumanities/rerum_server_nodejs

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.