Как использовать queryString в клиенте nodejs для fusionauth?
Я использую следующий код, чтобы получить всех пользователей. Это работает с клиентом Java, но дает следующую ошибку
{ code: '[invalid]', api_1 | message: 'You must specify either the [ids], [queryString], [email] or [username] property for a GET request.' }
Что я пытаюсь
let requestJSON = {}
requestJSON.queryString = "*";
client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);
function handleResponse (clientResponse) {
console.log(clientResponse.errorResponse.generalErrors[0]);
}
Также по какой-то причине предполагается, что это GET-запрос.
Я уже пытался сделать то же самое с помощью Почтальона, и это не работает. Я использую FusionAuth 1.5.0 везде.
1 ответ
Клиентская библиотека использует POST
запрос с телом JSON для выполнения поиска. Увидеть POST /api/user/search
Документация по API здесь https://fusionauth.io/docs/v1/tech/apis/users
Попробуйте это вместо этого:
let requestJSON = {
search: {
queryString: "*"
}
};
client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);
function handleResponse (clientResponse) {
console.log(clientResponse.errorResponse.generalErrors[0]);
}
Как сказал @robotdan, вы должны включить queryString
поле внутри search
свойство. Хотя на первый взгляд это может не быть явным, вы можете предположить это, взглянув на поля тела запроса:
Снимок экрана Fusion Auth User API.
Как вы можете видеть в третьей строке, естьsearch.queryString
где вы должны определить строку, которую вы ищете, которая в вашем случае все (*
). Кроме того, если вам нужен упорядоченный список, посмотрите на 6-ю строку, содержащую доступные поля сортировки, а в 7-й строке - на порядок результатов:asc
или desc
(на снимке экрана его нет, поэтому загляните на страницу официальной документации FusionAuth).
Представьте, что вы хотите, чтобы все пользователи, имя которых foo
на любом из них fullName
, заказанные пользователями email
в порядке убывания. Ваш объект должен быть примерно таким:
const request = {
search: {
queryString: '*foo*',
sortFields: [{ name: 'email', order: 'desc' }]
}
}
Обратите внимание на *
в начале и в конце: эти звездочки говорят поисковой системе, что foo
может иметь префикс и / или суффикс (но они вам не нужны).