In un'interfaccia API REST, dovrei verificare esplicitamente che il client abbia utilizzato solo i parametri utilizzati dall'API e restituire un HTTP 403 se un parametro di cui l'API non è a conoscenza era incluso nella richiesta?
Un po 'di contesto. Sto lavorando su un'API che minimizza i file JavaScript e LESS. Originariamente, i file JavaScript sono stati minimizzati utilizzando Google Closure Compiler. Poiché Closure Compiler ha più livelli di ottimizzazione (solo spazi bianchi, semplici ottimizzazioni e ottimizzazioni avanzate), l'API ha anche permesso al chiamante di specificare (facoltativamente) il livello, quindi:
POST http://example.com/api/v1/js?level=whitespace
e
POST http://example.com/api/v1/js?level=advanced
nella maggior parte dei casi darebbe risultati diversi.
Recentemente, ho dovuto aggiungere il supporto per ES6. Data la mancanza di un adeguato supporto per ES6 da parte di Closure Compiler, ho aggiunto YUI Compressor. Poiché questo non ha livelli di ottimizzazione, la chiamata ora è semplicemente:
POST http://example.com/api/v1/es6
Dopo POLA , ho l'impressione che non possa consentire ai chiamanti di utilizzare l'API in questo modo:
POST http://example.com/api/v1/es6?level=advanced
perché si aspetterebbero un risultato specifico, ma ne ottengono uno diverso. La soluzione consisterebbe nel verificare la presenza del parametro level
nell'URI e restituire un messaggio di errore che indica che il parametro non è supportato.
Ma controllo questo parametro specifico, perché non verifichi la presenza di lecel
(un errore di battitura), o optimize
(a ipotesi), o altro?
Pertanto, l'API si aspetta che i parametri a
, b
e c
siano eventualmente inclusi nell'URI, quale dovrebbe essere la risposta se l'URI contiene anche d
o e
?