Raportti avautuu selaimessa, parametrit renderöityvät ja vientipainike tuottaa virheen, tyhjän latauksen tai tiedoston, jota taulukkolaskenta kieltäytyy avaamasta. Tuolla yhdistelmällä on vakiomuoto. Toimiva raporttisivu on testannut renderöinnin ja todennuksen eikä mitään muuta. Vienti on erillinen pyyntö omalla vastauksellaan, ja asiakasohjelmattoman portaalin kautta se kulkee myös uudelleenkirjoituskerroksen läpi, jota ei koskaan suunniteltu tiedostolatauksille.

Kaksi polkua, yksi toimiva sivu

Renderöinti ja vienti ovat eri toimintoja, vaikka ne alkavat samasta painikkeesta. Raporttipalvelin renderöi sivun selaimelle ja renderöi viennin toisen tulostelaajennuksen kautta, jolla on oma sisältötyyppinsä ja oma virhekäsittelynsä, kuten vientidokumentaatio kuvaa. Portaali, joka päästää ensimmäisen täydellisesti läpi, voi silti runnella toisen, koska toinen on vastaus, jota portaali ei odottanut näkevänsä. Nämä kaksi jakavat istunnon ja osoitteen ja melkein mitään muuta.

Käsittele toimivaa sivua vain todisteena todennuksesta ja tavoitettavuudesta. Se todistaa, että tili voi päästä raporttipalvelimelle ja että portaali välittää HTML:ää. Se ei kerro mitään tiedostovastauksista, sisällön sijoittelun otsakkeista tai uudelleenohjauksista, jotka päättyvät lataukseen eivätkä asiakirjaan.

Juuri siksi vientipolkua kannattaa verrata erikseen sen sijaan, että testaisi uudelleen sivun, joka jo toimii. Kaksi pyyntöä, jotka jakavat istunnon, ovat yhä kaksi pyyntöä.

Kolme ehtoa, jotka ratkaisevat, mihin vienti katkeaa

Kolme kysymystä paikantaa vian nopeasti, ja jokainen vastaus osoittaa eri omistajaan.

Ensinnäkin, viedäänkö sama raportti, tili ja muoto oikein sisäverkosta? Jos viedään, raporttipalvelin ja sen renderöijä ovat kunnossa ja ero on käyttöpolussa. Toiseksi, kantako epäonnistunut vastaus tiedoston sisältötyyppiä vai HTML-sivua, jolla on tiedostotunniste? Se erottaa renderöijän virheen portaalin tekemästä korvauksesta. Kolmanneksi, kirjoittaako portaali pyynnön URL:n uudelleen vai poistaako se otsakkeita vastauksesta? Uudelleen kirjoitettu URL voi päätyä täysin eri päätepisteeseen.

Vastaa kaikkiin kolmeen ennen kuin muutat asetusta, koska jokaisella on eri korjaus. Renderöijän vika kuuluu raporttipalvelimelle, korvattu runko kuuluu portaalille ja poistettu otsake on politiikkakysymys, ei virhe.

Kirjoita vastaukset muistiin. Näistä kolmesta rivistä rakennettu tukitapaus on kymmenen kuvakaappauksen arvoinen.

Lue vientivastaus, älä tilakoodia

HTTP:n onnistumistila todistaa vain, että jokin vastasi pyyntöön. Tarkastele runko ja otsakkeet yhdessä, koska kiinnostava vika on onnistunut vastaus, joka kantaa väärää sisältöä.

curl -sS -D export.headers -o export.bin --location "https://portal.example.com/reports/export?format=xlsx"
file export.bin
head -c 300 export.bin

Otsaketuloste näyttää sisältötyypin ja kaikki sisällön sijoittelut, jotka portaali palautti. Komento file tunnistaa, mitä runko todella on, ja tekstitiedosto siellä, missä odotettiin taulukkolaskentaa, on klassinen korvattu kirjautumissivu. Komento head näyttää tarpeeksi HTML:n tunnistamiseksi tyhjentämättä koko raporttia päätteeseen.

Poista istuntoevästeet ja tunnukset ennen kuin jaat mitään siitä. Toimivan viennin tallenne on hyödyllinen todiste, ja toiselle kuuluvan istunnon tallenne on tapahtuma.

Raja poikkeus sovellukseen, ei tiliin

Jos portaali kirjoittaa vastauksen uudelleen tai estää sen, houkutteleva korjaus on vapauttaa koko sivusto tai tehdä raportista nimetön. Molemmat korjaavat latauksen ja poistavat syyn portaalin olemassaololle. Rajattu poikkeus nimeää yhden sovelluspolun, yhden sisältötyypin ja yhden suunnan, ja se pysyy sen tarkistettavana, joka omistaa käytännön.

Käytä sitä yhdyskäytäväversiota, jota todella ajat, ja sen dokumentoituja sovellusasetuksia. Asetus, jonka toimittaja kerran kuvasi liikennettä muuttamattomaksi, ei ole yleinen ohje, ja sen kopioiminen vanhasta foorumiketjusta on tapa, jolla tilapäisestä poikkeuksesta tulee pysyvä arkkitehtuuri.

Jos poikkeusta ei voi rajata niin kapeasti, vienti kuuluu todennäköisesti sisäiselle polulle eri käyttötavalla portaalin taakse sijoittamisen sijaan. Koko sivuston vapautus on portaalin omistajan päätös, ei yhden raportin kiertotie.

Hyväksy vienti, älä Tallenna-valintaikkunaa

Viimeinen tarkistus on tiedosto itse: se avautuu, siinä on odotetut sarakkeet ja sen summat täsmäävät raporttiin, jonka käyttäjä hyväksyi.

Tallenna-valintaikkunan ilmestyminen ei ole onnistuminen, eikä korjausvaroituksella avautuva tiedosto ole onnistuminen. Vertaa rivimäärää ja yhtä tunnettua arvoa näytöllä olevaan raporttiin, koska katkaistu vienti läpäisee jokaisen testin, joka katsoo vain tiedoston kokoa. Vienti toisen kerran, koska välimuistikerros, joka kerran tarjoaa väärän rungon, saattaa seuraavalla yrityksellä tarjota oikean.

Hyväksy työnkulku, jonka käyttäjä tarvitsi, eikä mitään vähempää. Lataus, joka avautuu väärässä sovelluksessa, on yhä epäonnistunut vienti.

Aiheeseen liittyvät artikkelit