Sugestões ao digitar
GET /v1/drugs/suggestions retorna nomes distintos enquanto o usuário digita, para campos de preenchimento automático.
Requisição
curl -G https://api.medifontis.com/v1/drugs/suggestions \
-H "Authorization: Bearer $MEDIFONTIS_API_KEY" \
--data-urlencode "country=br" \
--data-urlencode "q=dipi" \
--data-urlencode "limit=8"const params = new URLSearchParams({ country: 'br', q: 'dipi', 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": "br", "q": "dipi", "limit": "8"},
headers={"Authorization": f"Bearer {os.environ['MEDIFONTIS_API_KEY']}"},
timeout=10,
)
response.raise_for_status()
suggestions = response.json()["suggestions"]
Resposta
{
"country": "br",
"suggestions": [
"DIPIDOR",
"DIPIMED",
"DIPIREN",
"DIPIREX",
"DIPIRONA"
]
}
Ordenação
Os nomes exatos vêm primeiro, depois os nomes que começam com o termo buscado e, em seguida, as demais correspondências, com os nomes mais curtos primeiro. As sugestões vêm de todas as fontes, incluindo nomes de princípios ativos e de classificações.
Crie um preenchimento automático ágil
- Espere até que o usuário tenha digitado pelo menos 3 caracteres.
- Aplique um debounce de 150 a 250 milissegundos à digitação.
- Ignore as respostas de buscas que o usuário já alterou.
- Chame seu próprio backend, que adiciona a chave, em vez de chamar a API Medifontis diretamente.
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)
})