heyallan
(Allan Moreno)
30 Ottobre 2020, 12:21am
1
Il Front-End non consente ricerche vuote e mostra un messaggio utile che spiega che il termine di ricerca è troppo breve.
Tuttavia, l’endpoint API consente ancora ricerche vuote, ma la risposta è un oggetto JSON con un valore NULL e uno stato 200.
Non dovrebbe l’API rispondere con un messaggio di errore descrittivo e uno stato 400?
Atteso:
// Errore 400
{
"errors": [ "Hai fornito parametri non validi alla richiesta: q" ],
"error_type": "invalid_parameters"
}
Reale:
// 200 ok
{
"grouped_search_result": null
}
sam
(Sam Saffron)
30 Ottobre 2020, 12:37am
2
L’API potrebbe certamente essere migliorata in questo punto, ma la rotta di query consente molti argomenti:
search_args = { guardian: guardian }
search_args[:type_filter] = params[:type_filter] if params[:type_filter].present?
search_args[:search_for_id] = true if params[:search_for_id].present?
context, type = lookup_search_context
if context
search_args[:search_context] = context
search_args[:type_filter] = type if type
end
search_args[:search_type] = :header
search_args[:ip_address] = request.remote_ip
search_args[:user_id] = current_user.id if current_user.present?
search_args[:restrict_to_archetype] = params[:restrict_to_archetype] if params[:restrict_to_archetype].present?
Dovremmo prestare molta attenzione qui per verificare se trattiamo min_search_term_length come un requisito obbligatorio o come un’opzione facoltativa.
heyallan
(Allan Moreno)
31 Ottobre 2020, 10:34pm
3
Grazie @sam
Allo stato attuale:
La ricerca vuota è un punto morto nell’API
L’endpoint di ricerca accetta un termine di ricerca ma anche argomenti di metadati (utente, categorie, tag, ecc.)
Gli argomenti di metadati non sono documentati nell’API
Il front-end convalida correttamente la ricerca, ma l’API back-end la convalida solo parzialmente (consentendo il passaggio di una ricerca vuota)
Il messaggio di risposta dovrebbe essere descrittivo in ogni caso
Spero che questa panoramica sia utile.
Secondo me si tratta di un bug. Sarei sorpreso se questo fosse il comportamento previsto.
Grazie comunque