Suggestions de saisie
GET /v1/drugs/suggestions renvoie des noms distincts pendant la saisie, pour les champs d’autocomplétion.
Requête
curl -G https://api.medifontis.com/v1/drugs/suggestions \
-H "Authorization: Bearer $MEDIFONTIS_API_KEY" \
--data-urlencode "country=ca" \
--data-urlencode "q=metf" \
--data-urlencode "limit=8"const params = new URLSearchParams({ country: 'ca', q: 'metf', limit: '8' })
const response = await fetch(`https://api.medifontis.com/v1/drugs/suggestions?${params}`, {
headers: { Authorization: `Bearer ${process.env.MEDIFONTIS_API_KEY}` },
})
if (!response.ok) throw new Error(`Medifontis ${response.status}`)
const { suggestions } = await response.json()import os
import requests
response = requests.get(
"https://api.medifontis.com/v1/drugs/suggestions",
params={"country": "ca", "q": "metf", "limit": "8"},
headers={"Authorization": f"Bearer {os.environ['MEDIFONTIS_API_KEY']}"},
timeout=10,
)
response.raise_for_status()
suggestions = response.json()["suggestions"]
Réponse
{
"country": "ca",
"suggestions": [
"METFORMIN",
"METFORMIN ER",
"METFORMIN XR",
"METFORMIN-850",
"METFORMIN TABLETS"
]
}
Classement
Les noms exacts apparaissent en premier, puis les noms qui commencent par le texte saisi, puis les autres correspondances, les noms les plus courts d’abord. Les suggestions proviennent de toutes les sources, y compris des noms de substances et de classifications.
Créer une autocomplétion réactive
- Attendez que l’utilisateur ait saisi au moins 3 caractères.
- Appliquez un anti-rebond (debounce) de 150 à 250 millisecondes sur la saisie.
- Ignorez les réponses à une recherche que l’utilisateur a déjà modifiée.
- Appelez votre propre backend, qui ajoute la clé, plutôt que Medifontis directement.
let latest = 0
let timer
input.addEventListener('input', () => {
clearTimeout(timer)
const q = input.value.trim()
if (q.length < 3) return
timer = setTimeout(async () => {
const request = ++latest
const response = await fetch(`/api/medicine-suggestions?q=${encodeURIComponent(q)}`)
const { suggestions } = await response.json()
if (request === latest) render(suggestions)
}, 200)
})