Pourrait on m'expliquer ce code s'il vous plaît

a marqué ce sujet comme résolu.

Bonjour !

Je débute en développement et je cherche à comprendre le code ci-dessous, si quelqu’un peut me l’expliquer en détail je vous en serrais grandement reconnaissant par exemple qu’est ce que : (verb, url) dans "req.open(verb, url);".

Je pense avoir compris que l’on créer une fonction que l’on appel "Request" et qu’elle est appeler par le second morceau de code ce qui fait apparaître des marqueurs sur une carte, mais j’aimerai de plus amples détails.

Merci d’avance. ^^

function Request(verb, url) {

    this.verb = verb;
    this.url = url;

    var stations = [];

    this.call = function(callback) {
        var req = new XMLHttpRequest();
        req.open(verb, url);

        req.addEventListener('load', function() {
            if (req.status >= 200 && req.status < 400) {
                stations = JSON.parse(req.responseText);
                callback(req.responseText);
            } else {
                callback(req.status);
            }
        });

        req.addEventListener('error', function() {
            console.log("erreur avec l'url " + url);
        });

        req.send(null);
    };

    this.form = function(callback) {
        callback(stations);
    };

}
var requestApiJcDecaux = new Request("GET",
    "https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey=xxxxxxxxxxxxxxxxxx");

requestApiJcDecaux.call(function (response) {

    response = JSON.parse(response);
    response.forEach(function (info) {
        var latitude = info.position.lat;
        var longitude = info.position.lng;
        L.marker([latitude, longitude]).on('click', onMarkerClick).addTo(map);
    });

    function onMarkerClick(e) {
        var addressElt = document.getElementById("address");
        var bikeStandsElt = document.getElementById("bikeStands");
        var availableBikesElt = document.getElementById("availableBikes");
        requestApiJcDecaux.form(function (infos) {
            infos.forEach(function (info) {
                if ((e.latlng.lat === info.position.lat) && (e.latlng.lng === info.position.lng)) {
                    addressElt.innerText = info.address;
                    bikeStandsElt.innerText = info.bike_stands;
                    availableBikesElt.innerText = info.available_bikes;
                    return;
                }
            });
        });
    }
});

Edit: Suppression de l’API Key

+0 -0

Pour avoir de la pub partout ?

Je vais être clair je me "moque" pas mal de l’api je cherche juste à comprendre pourquoi telle propriété, telle argument ou telle ligne de code est à cette endroit et pourquoi.

Merci quand même de ta réponse.

je pourrais, mais j’aurai l’impression de me trahir en expliquant une api pour avoir de la pub partout…

Leeroy Jenkins

C’est une API pour afficher sur une carte Leaflet la liste des vélos en libre service mis à disposition par JC Decaux à Toulouse.

Le code n’est pas très difficile à comprendre : il envoie une requête sur l’API, récupère la réponse et génère les points de repère en fonction. Au clic sur un marqueur, il récupère les infos de ce dernier.

je pourrais, mais j’aurai l’impression de me trahir en expliquant une api pour avoir de la pub partout…

Leeroy Jenkins

C’est une API pour afficher sur une carte Leaflet la liste des vélos en libre service mis à disposition par JC Decaux à Toulouse.

Le code n’est pas très difficile à comprendre : il envoie une requête sur l’API, récupère la réponse et génère les points de repère en fonction. Au clic sur un marqueur, il récupère les infos de ce dernier.

RomHa Korev

Merci de ta réponse.

Cela je l’ai bien compris cependant c’est des choses comme : this.verb = verb; this.url = url; et d’autres que je ne comprends pas.

Pour comprendre la notion de this il faut regarder du côté des cours de programmation orientée objets (POO).

this.url = url

On peut alors comprendre que cette ligne signifie que l’attribut url de l’objet en question aura pour valeur url qui est en fait un paramètre passé par la fonction !

Je débute en développement et je cherche à comprendre le code ci-dessous, si quelqu’un peut me l’expliquer en détail je vous en serrais grandement reconnaissant par exemple qu’est ce que : (verb, url) dans "req.open(verb, url);".

Source:Hoobux

Il s’agit des méthodes HTTPS telles que "GET", "POST", "PUT", "DELETE", etc

Source : https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open#Parameters

+1 -0

Pour comprendre la notion de this il faut regarder du côté des cours de programmation orientée objets (POO).

this.url = url

On peut alors comprendre que cette ligne signifie que l’attribut url de l’objet en question aura pour valeur url qui est en fait un paramètre passé par la fonction ! Source:<?php?>

Je débute en développement et je cherche à comprendre le code ci-dessous, si quelqu’un peut me l’expliquer en détail je vous en serrais grandement reconnaissant par exemple qu’est ce que : (verb, url) dans "req.open(verb, url);".

Source:Hoobux

Il s’agit des méthodes HTTPS telles que "GET", "POST", "PUT", "DELETE", etc

Source : https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open#Parameters

EtienneR

Merci de vos réponses :D, j’ai jeter un coup d’œil, mais cela veut dire que les "paramètres" qui sont entre parenthèses peuvent êtres nommés comme bon nous semble ? J’ai fait le test en remplaçant verb et le code fonctionner quand même.

Peut on simplifié ce code ? J’ai essayer et je me retrouve avec cela :

function Requete() {


    call = function(callback) {
        let req = new XMLHttpRequest();
        req.open('GET', 'https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey=xxxxxxxxxxxxxxxxxxxxxxxxx');

        req.addEventListener('load', function() {
            if (req.status >= 200 && req.status < 400) {
                stations = JSON.parse(req.responseText);
                callback(req.responseText);
            } else {
                callback(req.status);
            }
        });

        req.addEventListener('error', function() {
            console.log("erreur avec l'url " + url);
        });

        req.send(null);
    };

}

let requestApi = new Requete("GET", "https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey=xxxxxxxxxxxxxxxxxxxxxxxxx");

call (function (response) {

    response = JSON.parse(response);
    response.forEach(function (info) {
        L.marker([info.position.lat, info.position.lng]).addTo(mymap).bindPopup("Je suis un Texte.");
    });
});

Mais je pense qu’il y a encore plus simple mais je ne trouve pas. Et mon code est il correct ou pas ??

jc decaux est l’entreprise qui nous pollue tous les jours avec les panneaux publicitaires, en ville, en campagne, sur les bords des routes, les abris bus, …

sur internet, j’ai adblock, dans la vrai vie, malheureusement, adblock n’existe pas.

cette entreprise nous contraint tous les jours a voir de la pub en masse, sans que nous n’y puissions rien y faire.

même si cette api est peut être louable, l’entreprise qui la propose ne l’est pas, d’ou mon précédent message.

concernant le code, il n’y a rien de bien méchant, il faut connaitre un langage avant d’essayer de l’utilisé pour utiliser une api.

Merci de rester dans le sujet.

Je pense que le PO n’en a pas grand-chose à faire de ton avis sur l’entreprise qui maintient l’API sur laquelle est faite la requête dans le code qu’il étudie, et pour cause, cela ne fait absolument pas avancer le schmilblick pour son problème.

Si cela te tient absolument à cœur, tu es libre de créer un thread à part.

concernant le code, il n’y a rien de bien méchant, il faut connaitre un langage avant d’essayer de l’utilisé pour utiliser une api.

Et pour connaître un langage il faut le pratiquer. Ce que fait le PO. Nous ne sommes pas là pour remettre son besoin en cause ni pour lui dire qu’il faut qu’il progresse, mais précisément pour l’aider à progresser.

Par ailleurs, lui dire que ce n’est "pas bien méchant" et le renvoyer au fait qu’il ne comprenne pas ce qu’il nous demande justement de lui expliquer est gratuitement humiliant. Surtout si c’est pour s’arrêter là et ne même pas le pointer vers de la doc ou lui fournir un début d’explication.

Bref, s’il te plait, abstiens-toi la prochaine fois. Ce genre de post n’est bénéfique pour personne, et carrément nuisible à Zeste De Savoir.

+6 -0

dsl pour la réponse tardive, je n’avais pas vu.

il ne dit pas buter quelque part, il dit ne pas comprendre comment fonctionne une fonction js.
répondre à un forum n’est pas faire à la place
apprendre en pratiquant oui, mais en ayant lu avant et en faisant un minimum de recherche.

quand a pointer sur une doc sur un point précis ok mais sur les bases d’un langage ca veut clairement dire qu’il a sauté des pans entier…

enfin mon avis sur l’entreprise, puisque c’est ça qui pose problème plus que le reste,on me demande pourquoi j’ai cette réaction dans un message précédent, je répond.

Et je pense que cela a un intérêt et un rapport avec le thread. Il veut utiliser l’api d’une des plus grosses fortunes de france, qui nous pollue les yeux malgré notre volonté, je pense qu’il est important qu’il en ait conscience et qu’il se pose les bonnes questions (par exemple pourquoi un groupe qui pèse quelques milliards d’€ ne peut pas documenter proprement une API, ou si utiliser cette api ne va pas contribuer aux effets néfastes que l’entreprise qui la propose engendre…)

PS, pour avoir été admin d’un forum pendant plusieurs années, si tu as une remarque a me faire sur mon comportement il y a des messages privés et des mails.

sur ce bonne journée.

a être hs https://www.francetvinfo.fr/meteo/climat/c-est-l-equivalent-de-la-consommation-de-trois-familles-faut-il-eteindre-les-panneaux-publicitaires-numeriques-pour-faire-des-economies-d-energie_3248077.html

+0 -4

Eh bien pour quelqu’un qui a "été admin d’un forum pendant plusieurs années", tu devrais savoir que quand un admin intervient pour te signaler que :

  • Tu es hors-sujet,
  • Cette attitude est tout sauf pédagogue,
  • ZdS ne cautionne pas le fait d’afficher tes idées politiques au détriment de l’aide que tu devrais apporter à un débutant,

La dernière chose à faire c’est :

  • de déterrer le sujet pour en rajouter une couche,
  • de jouer au kiki-meter en racontant que tu as administré un site,
  • de persister et signer dans le HS.

Non, ZdS ne cautionne pas ces messages ni ton attitude et là je parle même au nom de l’association, c’est à l’opposé de la façon dont on souhaite accueillir les débutants chez nous.

Ceci est un dernier avertissement.

+6 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte