http.get(„https://poe.ninja/data”) returnează „https://poe.ninja” în loc de calea dorită a domeniului (Programare, Du-Te)

Swifty a intrebat.

Încerc să fac o cerere get către „https://poe.ninja/data„, dar nu funcționează așa cum am crezut că ar trebui și nu știu cum să ajung la acea pagină în mod specific.

Sunt relativ nou în materie de go și de programare în general, așa că dacă îmi scapă ceva evident sau sunt complet în afara pistei cu privire la modul în care funcționează http.get pentru acest lucru, vă rog să mă anunțați.

Am încercat :Pagina de start și se pare că funcționează așa cum am crezut. https://poe.ninja/https://xkcd.com și https://xkcd.com/100Și asta funcționează așa cum am crezut, obținând pagina de start și, respectiv, cele 100 de benzi desenate

    resp, err := http.Get("https://poe.ninja/data/")
    if err != nil {panic(err)}
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {panic(err)}

    fmt.Println(string(body))

//From said code I'd expect to get the /data path but instead only get the homepage

Comentarii

  • Ești sigur că primești pagina principală? Pagina /data/ pare să fie generată de javascript. –  > Por Burak Serdar.
  • Pagina returnată de programul Go, de un browser web și de curl arată cam la fel. Vă rugăm să descrieți ce vă așteptați și ce primiți. –  > Por Cerise Limón.
  • @bserdar s-ar putea să fie în parte neînțelegerea mea aici, dar am crezut că răspunsul http.get ar fi același cu sursa paginii. De asemenea, cererea …/ returnează același lucru ca și cererea …/data, și ambele sunt identice la codul sursă pe care îl pot vedea din pagina de start –  > Por Swifty.
  • Nu ați înțeles greșit și returnează sursa paginii. Diferența este că, după comanda get, nu există nimic pentru a rula javascript-ul returnat pentru a construi pagina. Pagina este generată dinamic de Javascript. –  > Por Burak Serdar.
  • Pagina returnată către browser și programul Go sunt identice, octet cu octet. A se vedea view-source:https://poe.ninja/data –  > Por Cerise Limón.
1 răspunsuri
Mike Mackintosh

React, Vue și alte cadre front-end utilizează rutarea pe partea clientului (detectarea căii JavaScript) pentru a reda conținutul în browser. Acest lucru previne necesitatea ca clientul să contacteze serverul web la fiecare click și navigare. Acest lucru ar putea însemna unul din două lucruri:

  • Clientul va efectua un apel API către server pentru a prelua datele. Folosiți ceva de genul filei Network (Rețea) din Developer Tools (Instrumente pentru dezvoltatori) pentru a păstra controlul asupra punctelor finale cu care comunică clientul.
  • Folosind o abordare headless Chrome/WebKit, etc. cu JavaScript activat. Acest lucru va permite instrumentului dvs. să extragă conținutul paginii, să îl redea folosind JavaScript și, în cele din urmă, să returneze codul calculat din front-end. Din cauza modului în care clienții redau aplicațiile de o singură pagină, poate fi dificil să urmăriți o anumită div#id și div#class elemente

Tags: