D'accord, je suis toujours nouveau en JavaScript. Selon le titre, comment récupérer une seule URL API, mais avec 4 paramètres différents. Mon objectif est d'afficher 4 catégories différentes comme résultat
exemple (j'ai 4 catégories différentes): p> Je veux faire chaque catégorie d'appels à une API p> Méthode 1 FORT> P> Pour appeler la catégorie 1: P> const parameter1 = {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: `USERID=userid&TOKEN=usertoken&CATEGORY=1`
};
const parameter2 = {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: `USERID=userid&TOKEN=usertoken&CATEGORY=2`
};
const parameter3 = {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: `USERID=userid&TOKEN=usertoken&CATEGORY=3`
};
const parameter4 = {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: `USERID=userid&TOKEN=usertoken&CATEGORY=4`
};
Promise.all([
fetch(url,parameter1).then(value => value.json()),
fetch(url,parameter2).then(value => value.json()),
fetch(url,parameter3).then(value => value.json()),
fetch(url,parameter4).then(value => value.json()),
])
.then((value) => {
console.log(value)
//json response
})
.catch((err) => {
console.log(err);
});
4 Réponses :
Vous pouvez le prendre un pas plus loin. Étant donné que votre méthode, les en-têtes et la partie du corps sont tous identiques, il suffit d'extraire cela à une seule fonction. Custom-Créez les paramètres de la catégorie, puis appelez Fetch code>.
const thatPostFunction = category => {
const method = 'POST'
const headers = { 'Content-Type': 'application/x-www-form-urlencoded' }
const body = `USERID=userid&TOKEN=usertoken&CATEGORY=${category}`
return fetch(url, { method, headers, body })
}
const categories = [...category ids...]
const promises = categories.map(c => thatPostFunction(c))
Promise.all(promises)
.then((value) => {
console.log(value)
//json response
})
.catch((err) => {
console.log(err);
});
Catégories.Map (ThatPostFunction) Code>, Nettoyant
Merci, après un peu de tweak (const promesses =) et d'une modification de catégories ID, j'ai essayé votre code et obtenez les appels de chaque catégorie ^ _ ^ Merci beaucoup, Dieu vous bénisse
Vous pouvez simplement créer une fonction qui les utilise tous:
p>
const categories = [1,2,3,4]; const postUrls = (items) => { const promises = [] items.forEach(item => { const url = 'http://www.myapiurl.com/thisapi'; const options = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: `USERID=userid&TOKEN=usertoken&CATEGORY=${item}` }; const prms = fetch(url, options) .then(response => response.json()) promises.push(prms) }) return Promise.all(promises) } postUrls(categories) .then(data => console.log('Done!'))
Vous pouvez également créer le tableau de promesses à l'aide de Promises = items.map (item => {...; renvoyer les prnes;}) code>
@ Hybrid Merci beaucoup d'avoir arrêté et m'apprends ^ _ ^ Que Dieu vous bénisse
J'écrirais une fonction pour convertir une pièce d'identité de catégorie en une promesse, puis écrivez une fonction wrapper pour convertir une gamme d'identifiants de catégorie en une promesse de résolution à une gamme de résultats de récupération:
P>
<script> // Faking out fetch for testing const fetch = (url, opts) => Promise.resolve({ json: () => ({ categoryId: `${opts.body.slice(opts.body.lastIndexOf('=') + 1)}`, more: 'here' }) }) </script>
Merci beaucoup d'avoir arrêté de m'avoir arrêté et m'apprends ^ _ ^ Que Dieu vous bénisse
Si votre API est flexible, vous pourrez peut-être demander toutes les 4 catégories en même temps. J'ai vu des Apis le faire comme ceci:
body: `USERID=userid&TOKEN=usertoken&CATEGORY=1&CATEGORY=2&CATEGORY=3&CATEGORY=4`
Malheureusement, l'URL de l'API n'est pas flexible, mais le paramètre est. L'URL API reste la même www.theurlapi.com Seuls les paramètres du corps changent, par exemple: Catégorie 1, 2, 4. Mais j'ai essayé d'utiliser le code @joseph et cela fonctionne parfaitement et réalisez ce que je souhaite
Vous pouvez créer une fonction de votre code et utiliser des appels récursifs sur la fonction, vous devez ajouter du code pour gérer la réponse lorsque vous obtenez une réponse positive, appelez à nouveau la fonction avec le nouveau paramètre.
Ce que l'API revient est régie par l'API, donc si vous devez demander à chaque «catégorie» individuellement, il n'y a aucun moyen de le faire. Sauf s'il y a un point d'extrémité pour aller chercher toutes les données, puis le traiter à l'extrémité avant.
@Gifco, alors voulez-vous dire que je dois en effet coder chaque 4 récupération différente comme mon poste d'origine?
@Andrewdaly voulez-vous dire que je dois faire des appels de récupération à l'intérieur de la fonction foreach ou de boucle? Y a-t-il un exemple sur la méthode?