Pieniä kysymyksiä ohjelmoinnista

Liittynyt
21.11.2016
Viestejä
324
Poista nuo ylimääräiset hipsut kaarisulkujen ulkopuolelta. Pitäisi olla
Koodi:
{
    "pindora": {
        "id": "AVAIN"
    },
    "id": "ext-1"
}
 
Liittynyt
19.10.2016
Viestejä
1 916
Hmm.. etenee.

Huomasin lisäksi käyttäväni täysin väärää API-keyta, nyt kun lisäsin oikean secret keyn niin alkoi jotain tapahtumaan.

1661250435486.png


Lokiin ei tule erroria enää, mutta lukko (pindora) ei myöskään muutu unclocked-tilaan. Lähempänä kuitenkin ollaan kuin aikaisemmin tämän 30min aikana.. :)

pindoran sivuilla apin puolella näkyy toimintoa: (aikaleima pielessä mutta minuutit matchaa). Lisäksi huomasin, että tuo dooropengrant on sallittuna. Mistä PIndora tietää, että komento koskee dooropengrantia? En ehkä vain ymmärrä, mutta pitääkö tuo dooropengrant.create olla jossakin määriteltynä, jotta se pindoralle asti päätyy?
1661250626476.png
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
678
Käsittääkseni selaimen osoiteriviltä ei suoraan voi POST-requestia tehdä (tietty javascript-kikkailulla onnistuu). Eli tuolla curlilla, wgetillä tai vastaavalla tai siten tekemällä koneelle jonkun html-tiedoston jota aukoo selaimella.
Curlilla voi lähettää POST:eja, esimerkiksi:
Koodi:
curl -X POST -H "Content-Type: application/json" \    -d '{"foo": "bar", "bar": "foo"}' \    https://foo.bar
 
Liittynyt
16.11.2020
Viestejä
2 566
En tiiä kiinnostaako ketään, mutta jos curlilla tarvii testailla enemmänkin, eikä halua olla koko aikaa kirjoittelemassa käyttäjänimeä ja passua tai lähettelemässä Authorization headeria, niin autentikaation voi myös kertoa ~/.netrc tiedostossa ja käyttää vipua -n.

Täällä dokkaria: curl - How To Use

Eikä pääse tunnarit vahingossakaan väärään paikkaan, jos testikutsuja jaetaan chateissa eri toimijoiden kesken tmv.

Jonkun verran oon käyttänyt testailussa myös VSCoden RestClientiä. En osaa varsinaisesti perustella, että ois sen parempi kuin mikään muukaan tapa, mutta saa paketoitua varsin mukavasti talteen testikutsut ja VSCode näyttää siististi vastaukset.
 
Liittynyt
07.01.2021
Viestejä
678
Itsekin hiljattain asensin tuon RestClientin. Se on ihan kätevä, mutta ilmeisesti sitä ei saa automatisoitua? Pitää ehkä väsätä skripti, joka lähettää kaikki siinä .html -tiedostossa olevat komennot ja lukee statuksen. Tosin sitten varmaan sellaiset, jotka palauttaa muuta kuin 200 pitää kirjoittaa omaan tiedostoonsa...
 
Liittynyt
16.11.2020
Viestejä
2 566
Sikäli kun minä ymmärrän, niin tuo RestClient on tarkoitettu enemmänkin manuaaliseen testaamiseen ja kutsujen yksitellen ajamiseen.

Jos tarvii putkittaa useampia kutsuja ja varsinkin, jos tarvii reagoida eri rajapintojen vastauksiin ja tehdä jotain niiden perusteella, niin sellaiset joutunee kyllä koodailemaan itse. Kevyessä tapauksessa joku bash- tai python-skripti varmaan riittää ihan hyvin.

Raskaammassa integraatiokoodailussa Apachen Camel tutustumisen arvoinen.
 
Liittynyt
19.10.2016
Viestejä
3 411
Sikäli kun minä ymmärrän, niin tuo RestClient on tarkoitettu enemmänkin manuaaliseen testaamiseen ja kutsujen yksitellen ajamiseen.

Jos tarvii putkittaa useampia kutsuja ja varsinkin, jos tarvii reagoida eri rajapintojen vastauksiin ja tehdä jotain niiden perusteella, niin sellaiset joutunee kyllä koodailemaan itse. Kevyessä tapauksessa joku bash- tai python-skripti varmaan riittää ihan hyvin.

Raskaammassa integraatiokoodailussa Apachen Camel tutustumisen arvoinen.
Axios ( "for the browser and node.js" ) on sangen miellyttävä käyttää ihan helppokäyttöisyyden ja selkeyden vuoksi ( GitHub - axios/axios: Promise based HTTP client for the browser and node.js )

Tai ainakin omasta mielestä tuo melko luettavaa.
 
Liittynyt
16.11.2020
Viestejä
2 566
Axios ( "for the browser and node.js" ) on sangen miellyttävä käyttää ihan helppokäyttöisyyden ja selkeyden vuoksi ( GitHub - axios/axios: Promise based HTTP client for the browser and node.js )

Tai ainakin omasta mielestä tuo melko luettavaa.
Joo, jos node on asennettuna ja JS-maailma tuttua, niin mikä jottei. Noi Axios-kutsut on tosiaan varsin simppeleitä kirjoitella ja lukea.

Yleisesti riippuu varmaan tarpeesta, käyttöympäristösta ja siitä, mikä on tuttua, että millä kannattaa lähteä tekemään.
 
Liittynyt
19.10.2016
Viestejä
3 411
Joo, jos node on asennettuna ja JS-maailma tuttua, niin mikä jottei. Noi Axios-kutsut on tosiaan varsin simppeleitä kirjoitella ja lukea.

Yleisesti riippuu varmaan tarpeesta, käyttöympäristösta ja siitä, mikä on tuttua, että millä kannattaa lähteä tekemään.
Noh, tuo tuli ensimmäisenä mieleen, millä olisi helppo lähteä liikkeelle käytännössä:

Jos tarvii putkittaa useampia kutsuja ja varsinkin, jos tarvii reagoida eri rajapintojen vastauksiin ja tehdä jotain niiden perusteella, niin sellaiset joutunee kyllä koodailemaan itse. Kevyessä tapauksessa joku bash- tai python-skripti varmaan riittää ihan hyvin.
Noden asennus ei paljoa vaadi. Pythonin kokeilusta niin kauan, etten muista siitä mitään, mutta kuvittelisin, että silläkin onnistuu.

Mutta joo, tietysti riippuu noista asioista. Kai mä olisin tuttuuteen perustuen voinut C#:a suositella, mutta en näe siinä järkeä, kun ajattelin kontekstina 'my first post and get'-appista.
 
Liittynyt
07.01.2021
Viestejä
678
Ajattelin omaa harrasteprojektiani tuossa. Olisi mukava jos ei tarvitsisi montaa erillistä tiedostoa ylläpitää.
 
Liittynyt
16.11.2020
Viestejä
2 566
kun ajattelin kontekstina 'my first post and get'-appista.
Mää ajattelin yleisesti vaan jotain HTTP-rajapintojen testaamista ja ihmistä, joka tietää mitä tekee, että tekee sit tarpeesta riippuen vehkeillä, joilla onnistuu ja saa helpoiten tehdyksi.

muoks. tuohon ensitutustumiseen Node ja Axios varmasti ihan hyvä valinta.
 
Viimeksi muokattu:
Liittynyt
17.10.2016
Viestejä
14 550
Ei kysymys, vaan toteamus: Heroku lopettaa Free Tier -tuotteensa. Ja tavallaan en ihmettele, ilmaisuus houkuttaa aina väärinkäyttäjät kuin kärpäset paikalle.

- discontinue free product plans and delete inactive accounts

Our product, engineering, and security teams are spending an extraordinary amount of effort to manage fraud and abuse of the Heroku free product plans. In order to focus our resources on delivering mission-critical capabilities for customers, we will be phasing out our free plan for Heroku Dynos, free plan for Heroku Postgres, and free plan for Heroku Data for Redis®, as well as deleting inactive accounts.

Starting October 26, 2022, we will begin deleting inactive accounts and associated storage for accounts that have been inactive for over a year. Starting November 28, 2022, we plan to stop offering free product plans and plan to start shutting down free dynos and data services. We will be sending out a series of email communications to affected users.
 
Liittynyt
03.07.2018
Viestejä
347
Post ym. apien testaamiseen on ihan työkalujakin joilla on paljon nopeampi ja kivempi testata. Selaimesta saa requestin talteen ja importattua esim. postmaniin niin sitten voi muutella postmanissa parametrejä.
 
Liittynyt
16.11.2020
Viestejä
2 566
^ niin eikö se Postman tuolla mainittu suunnilleen ensimmäisten viestien joukossa, kun asiasta tuli puhetta?

Nää jälkimmäiset liittyi siihen, jos tarvii testata jotain putkea erilaisia kutsuja. Kaikenlaisia systeemejä on, joissa pitää ensin kysellä ulkoisella id:llä järjestelmän sisäinen id yms. tietoja, joilla pääsee vasta hakemaan tai tekemään sen, mitä oikeasti haluaa.
 
Liittynyt
17.10.2016
Viestejä
14 550
Voiko Postmanilla ajaa testejä ilman sitä GUI:ta?`Siis osana CI/CD-putkea?
Onnistuu Newmanilla. En ole itse kokeillut:


Repo:

 
Liittynyt
19.10.2016
Viestejä
1 916
No yritetääs täältä taas kysellä. Eli jatkoa edeltävälle POST kyssärille, jonka aiemmin viikolla esitin ja se ratkesikin.
Sain siis Pindora POST:n oikeaan muotoon ja postman sen tuuppaa onnistuneesti eteenpäin -> oven lukko aukeaa.
Nyt yritän tätä automatisoida käyttäen sellaista automatisointi/sääntömoottoria kuin webcore. En tiedä onko kenellekään tuttu, mutta tuskin sillä sinällään on väliä. Näkeekö kukaan tässä alla olevassa kuvassa jotakin probleemaa, joka aiheuttaa errorin:
1661585807455.png


1661585732420.png


Voisin vielä tarkentaa, että Make a POST lauseen sisältö menee näin:

1661585845867.png


Eikös error jotenkin viittaisi, että content-type kohdassa on jotain väärin. Postmanilla siis komento menee läpi, mutta kun yritän konvertoida tuota toimivaa komentoa webcoreen, niin joku asia ei webcoren mielestä ole oikea tapa toimia. Ja itse asiassa komento menee webcoressa myös API:lle asti, koska Pindoran sivuilla "usage countissa" lukumäärä kasvaa aina kun yritän ajaa komentoa. Eli komento menee perille, mutta jokin kohta mättää eikä lukko aukea.
 

dome

Tukijäsen
Liittynyt
17.10.2016
Viestejä
585
No yritetääs täältä taas kysellä. Eli jatkoa edeltävälle POST kyssärille, jonka aiemmin viikolla esitin ja se ratkesikin.
Sain siis Pindora POST:n oikeaan muotoon ja postman sen tuuppaa onnistuneesti eteenpäin -> oven lukko aukeaa.
Nyt yritän tätä automatisoida käyttäen sellaista automatisointi/sääntömoottoria kuin webcore. En tiedä onko kenellekään tuttu, mutta tuskin sillä sinällään on väliä. Näkeekö kukaan tässä alla olevassa kuvassa jotakin probleemaa, joka aiheuttaa errorin:




Voisin vielä tarkentaa, että Make a POST lauseen sisältö menee näin:



Eikös error jotenkin viittaisi, että content-type kohdassa on jotain väärin. Postmanilla siis komento menee läpi, mutta kun yritän konvertoida tuota toimivaa komentoa webcoreen, niin joku asia ei webcoren mielestä ole oikea tapa toimia. Ja itse asiassa komento menee webcoressa myös API:lle asti, koska Pindoran sivuilla "usage countissa" lukumäärä kasvaa aina kun yritän ajaa komentoa. Eli komento menee perille, mutta jokin kohta mättää eikä lukko aukea.
Saako tuota webcoren ”Request body type” kenttää valittua vapaasti? Jos kyllä niin laita siihen tuo ”application/vdn.pindora.v1+json” ja jätä se header kohdasta pois. Vaihtoehtoisesti jätä se tyhjäksi jos mahdollista, koska määrität sen käsin jo headereissä.
 
Liittynyt
19.10.2016
Viestejä
1 916
Saako tuota webcoren ”Request body type” kenttää valittua vapaasti? Jos kyllä niin laita siihen tuo ”application/vdn.pindora.v1+json” ja jätä se header kohdasta pois. Vaihtoehtoisesti jätä se tyhjäksi jos mahdollista, koska määrität sen käsin jo headereissä.
No ei oikeastaan saa. Siellä on kolme vaihtoehtoa: JSON, FORM ja CUSTOM.
1661622214736.png


FORMin sisältö näin:
1661622256540.png


CUSTOMin sisältö näin, ja siellä pystyy content typeä säätämään, mutta vakiona löytyy nuo rivit ja mitään omaa ei suoraan tuohon kohtaan voi laittaa.
1661622289688.png
 

dome

Tukijäsen
Liittynyt
17.10.2016
Viestejä
585
No ei oikeastaan saa. Siellä on kolme vaihtoehtoa: JSON, FORM ja CUSTOM.
Ok. Vaikea sanoa saako tuota siinä tapauksessa toimimaan lainkaan, vai tuleeko ko. softan rajoitteet vastaan. Pikainen googletuskaan ei hirveästi viisaammaksi tehnyt. Ilmeisesti ”local network” requestissä tuo pitäisi voida vapaasti määrittää, mutta sellainenhan tuo ei ole.
 
Liittynyt
17.10.2016
Viestejä
14 550
Voihan sen vielä koittaa, tuleeko tuo 415 Custom-tyypillä. Laitat vaan Request bodyyn jotain kuraa ja katso vastaus. Jos yhä 415, niin se siitä. Jos joku muu, niin sitten sen voisi saada toimimaan.
 
Liittynyt
19.10.2016
Viestejä
1 916
Eipä tuolta muuta tule kuin 400 silloin kun sotkee header infon. Sitten ei apissa näy osumia. Sitten kun pistää merkit kuvankaappauksen mukaisesti, niin api saa osumia mutta 415 lokin mukaan. Yritin konvertoida postmanin toimivaa koodia myös python muotoon eventghostille, eikä sekään toiminut. Miljoona punaista riviä. Helvetti, että on vaikeaa. Muita keinoja en keksikään millä voisin mukavasti generoida tuon POSTin Pindoralle.
 
Liittynyt
19.10.2016
Viestejä
1 916
Pistäpä koodi tänne.
Se on toimivana postmanissa curlina tällainen:


curl --location --request POST 'https://admin.pindora.fi/api/integration/openpermissions' \
--header 'Pindora-Api-Key: 142222e3-f518-22204-2227-222222229f-33333303-225c-222e-228a-22222229d' \
--header 'content-type: application/vdn.pindora.v1+json' \
--data-raw '{
"pindora": {
"id": "b33333a-03a7-43333-3336-b333333c7ce"
},
"id": "ext-1"
}'

Luontaisesti api key muutettu ja id myös, ettei ovi avaudu :) Mutta tuo siis toimii.

Niin ja pythonina tällainen:
import requests
import json
url = "https://admin.pindora.fi/api/integration/openpermissions"
payload = json.dumps({
"pindora": {
"id": "be4343343434434343434343434437ce"
},
"id": "ext-1"
})
headers = {
'Pindora-Api-Key': '140a343434434434343443344334603-48344343443443434309d',
'content-type': 'application/vdn.pindora.v1+json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
 
Liittynyt
17.10.2016
Viestejä
14 550
Mikä virhe sulle siis tulee? Ja voit jättää koko json.dumpsin pois, laita se annettava data payload-muuttujaan suoraan ja datan sijaan anna parametri json=payload. Mutta siis, mitä virhettä saat?
 
Liittynyt
19.10.2016
Viestejä
1 916
Mikä virhe sulle siis tulee? Ja voit jättää koko json.dumpsin pois, laita se annettava data payload-muuttujaan suoraan ja datan sijaan anna parametri json=payload. Mutta siis, mitä virhettä saat?
Niin siis minä kopioin suoraan sen mikä on postmanissa ja siitä error on:
1661629766469.png


Mun pitää hetken aikaa nyt tavata tuota sun aiempaa viestiä, että ymmärrän mikä pitää korvata ja miten..
 
Liittynyt
17.10.2016
Viestejä
14 550
Toi virhe liittyy SSL-sertin tarkistukseen. Mutta ton hostin serti näyttäisi olevan ihan kunnossa, eli joku aiheuttaa sen ettei toi Python osaa sitä kunnolla tsekata. Mulla ei kokemusta Windowsista, joten en osaa tarkemmin jeesiä miten tuo pitäisi fiksata. Sen tsekin voi ohittaa antamalla post():n parametriksi verify=False. Eli:
Python:
import requests

url = "https://admin.pindora.fi/api/integration/openpermissions"
payload = {
    "pindora": {
    "id": "be4343343434434343434343434437ce"
  },
  "id": "ext-1"
}

headers = {
'Pindora-Api-Key': '140a343434434434343443344334603-48344343443443434309d',
'content-type': 'application/vdn.pindora.v1+json'
}

response = requests.request("POST", url, headers=headers, json=payload, verify=False)
print(response.text)
Tossa myös se json-muutos. Ja tosiaan, älä käytä Spoler-tägejä koodille, vaan ihan Koodi-tägejä.
 
Liittynyt
19.10.2016
Viestejä
1 916
Toi virhe liittyy SSL-sertin tarkistukseen. Mutta ton hostin serti näyttäisi olevan ihan kunnossa, eli joku aiheuttaa sen ettei toi Python osaa sitä kunnolla tsekata. Mulla ei kokemusta Windowsista, joten en osaa tarkemmin jeesiä miten tuo pitäisi fiksata. Sen tsekin voi ohittaa antamalla post():n parametriksi verify=False. Eli:
Python:
import requests

url = "https://admin.pindora.fi/api/integration/openpermissions"
payload = {
    "pindora": {
    "id": "be4343343434434343434343434437ce"
  },
  "id": "ext-1"
}

headers = {
'Pindora-Api-Key': '140a343434434434343443344334603-48344343443443434309d',
'content-type': 'application/vdn.pindora.v1+json'
}

response = requests.request("POST", url, headers=headers, json=payload, verify=False)
print(response.text)
Tossa myös se json-muutos. Ja tosiaan, älä käytä Spoler-tägejä koodille, vaan ihan Koodi-tägejä.
Jees, thanks jeesistä silti vaikkei homma skulaakkaan.
Erroria vielä puskee ja nyt vähän nätimmän näköinen kun SSL-herja pois.
1661630961411.png


Pitää jättää vielä hautumaan, josko tämä jossain kohtaa aukenee mistä kyse. Hieman ulalla vaan tämänkin kanssa olen.
 
Liittynyt
17.10.2016
Viestejä
14 550
Okei, sulla on joku vanha versio requests-kirjastosta. Ota sitten se json.dumps ja data=payload takaisin.
 
Liittynyt
19.10.2016
Viestejä
1 916
Okei, sulla on joku vanha versio requests-kirjastosta. Ota sitten se json.dumps ja data=payload takaisin.
Kiitti. Nyt sain Eventghostistakin toimimaan. Vaati sen verify=false perään siihen postmanin generoimaan python requestiin. Nyt vielä mietin, että voiko tällä ssl-varmistuksella olla mitään merkitystä tuon webcoren toiminnan kannalta?
 
Liittynyt
17.10.2016
Viestejä
14 550
Nyt vielä mietin, että voiko tällä ssl-varmistuksella olla mitään merkitystä tuon webcoren toiminnan kannalta?
Mä sanoisin, että ei. Toi SSL tsekataan ennen kuin se serveri voi antaa vastausta takaisin. Mutta koska sieltä tulee se 415-koodi, niin serveri selvästi vastaa. Toi SSL liittyy jotenkin Python-asennukseen. Ehkä tohon vanhaan requests-paketin versioon ja johonkin muuhun vanhaan pakettiin. Ja saisi luultavasti fiksattua päivittämällä noi. (Ja kannattaisikin päivittää.) Selaimella kun katsoo, ton hostin serti näyttää olevan ihan kunnossa.
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
678
On muuten jotenkin sekava tuo Postman. Joskus viime vuonna sitä tutkiskelin, mutta jotenkin tuosta puuttuu dummies-versio, jossa vaan lisää halutut kutsut ja siinä se. Sen sijaan on kaiken maailman kokoelmia, workspaceja, ympäristöjä jne ja nämä pitäisi kaikki ilmeisesti laittaa kuntoon että saa tehtyä jotain. Tai sitten en tajunnut jotain...

Mutta pakkohan tuo on alkaa perkata kun pitää alkaa tehdä kyselyitä, joissa on access control mukana. Nuo pelkät tiedon haut menee ilman kirjautumisiakin.
 
Liittynyt
17.10.2016
Viestejä
14 550
Sen sijaan on kaiken maailman kokoelmia, workspaceja, ympäristöjä jne ja nämä pitäisi kaikki ilmeisesti laittaa kuntoon että saa tehtyä jotain. Tai sitten en tajunnut jotain...
Mun mielestä noihin ei tarvise koskea. Sen kuin kirjoittaa haun ja ampuu sen. Ei tarvitse Postaman-tiliä sun muista. Eikö tuo siis onnistu?
 
Liittynyt
17.10.2016
Viestejä
5 334
Tuo postman ilmeisesti selainpohjaisena lähettää nuo requestit netin kautta? Jostain pitäisi keksiä vähän vastaava työkalu joka hoitaisi homman siltä koneelta mistä käskyttää, meillä kun duunissa on erinäisissä softissa sellaisia apeja jotka eivät ole julkisessa netissä millään tavalla ja niiden kanssa pitäisi pelehtiä.
 
Liittynyt
31.12.2016
Viestejä
442
Tuo postman ilmeisesti selainpohjaisena lähettää nuo requestit netin kautta? Jostain pitäisi keksiä vähän vastaava työkalu joka hoitaisi homman siltä koneelta mistä käskyttää, meillä kun duunissa on erinäisissä softissa sellaisia apeja jotka eivät ole julkisessa netissä millään tavalla ja niiden kanssa pitäisi pelehtiä.
Asetukset muistaakseni Postman tallensi pilveen, mutta jokaisen kutsun lähetys tuntuu oudolta...
Thunder Client jos VSCode käytössä. Thunder Client - Visual Studio Marketplace
Thunder tallentaa kutsu historian paikallisesti koneelle ja käsittääkseni toimii paikallisesti.
 
Liittynyt
17.10.2016
Viestejä
5 334
Asetukset muistaakseni Postman tallensi pilveen, mutta jokaisen kutsun lähetys tuntuu oudolta...
Thunder Client jos VSCode käytössä. Thunder Client - Visual Studio Marketplace
Thunder tallentaa kutsu historian paikallisesti koneelle ja käsittääkseni toimii paikallisesti.
Äh.. Ei ole VSCodea käytössä. Pitää siis varmaan pitäytyä python-skripteissä, niillä ainakin koko prosessi on alusta loppuun omissa käsissä eikä ongelmien tai virheen sattuessa voi kuin katsoa peiliin :D Tähänkin asti on tullut sekä töissä että kotona tehtyä paljon API-virityksiä pythonilla niin se alkaa sujua aikalailla sujuvasti, testailuun vaan olisi kaivannut ehkä jotain graafista simppeliä interfacea että olisi parilla klikkauksella saanut testailtua asioita.
 
Liittynyt
17.10.2016
Viestejä
14 550
Tuo postman ilmeisesti selainpohjaisena lähettää nuo requestit netin kautta?
Ei se mitään kierrätä netin kautta. Jos teet requestin localhostiin niin sinne se menee eikä minnekään nettiin. Tuo on tarkoitettu ihan oikeaan softakehitykseen eli tietenkin myös lokaaliin kehitykseen.

En oikein ymmärrä tuota "selainpohjaisena". Postman on tehty Electronilla. Mutta lopputulos on ihan oikea appi, joka pyörii sun koneellasi ja jolla käytössä sun koneen resurssit. Postman ei pyöri missään selaimessa.
 
Liittynyt
17.10.2016
Viestejä
5 334
Ei se mitään kierrätä netin kautta. Jos teet requestin localhostiin niin sinne se menee eikä minnekään nettiin. Tuo on tarkoitettu ihan oikeaan softakehitykseen eli tietenkin myös lokaaliin kehitykseen.

En oikein ymmärrä tuota "selainpohjaisena". Postman on tehty Electronilla. Mutta lopputulos on ihan oikea appi, joka pyörii sun koneellasi ja jolla käytössä sun koneen resurssit. Postman ei pyöri missään selaimessa.
Ok, ensimmäisenä vaan tuli mieleen että kun pyörii selaimessa että lähteekö requestitkin sen nettisivun kautta maailmalle. Vai onko tuosta oikeaa sovellustakin olemassa? Tosiaan kun tarvis olisi tehdä noita kyselyitä privaattiosoitteisiin niin luonnollisesti netin kautta nuo eivät onnistuisi.
 
Liittynyt
17.10.2016
Viestejä
14 550
Ok, ensimmäisenä vaan tuli mieleen että kun pyörii selaimessa että lähteekö requestitkin sen nettisivun kautta maailmalle. Vai onko tuosta oikeaa sovellustakin olemassa? Tosiaan kun tarvis olisi tehdä noita kyselyitä privaattiosoitteisiin niin luonnollisesti netin kautta nuo eivät onnistuisi.
En käytä muuta kuin appista. Täältä saa ladattua:


Mitään tilejä tms, ei tarvitse luoda eikä kirjautua. Ne vain mahdollistavat pilvisynkat jne.
 
Liittynyt
17.10.2016
Viestejä
5 334
En käytä muuta kuin appista. Täältä saa ladattua:


Mitään tilejä tms, ei tarvitse luoda eikä kirjautua. Ne vain mahdollistavat pilvisynkat jne.
Aa.. Olipas piilossa tuolla sivulla tuo desktop appin lataus ainakin itselläni mutta löytyihän se sieltä... Pitääpä kokeilla josko tuosta olisi apua kun taas heti viikon päästä pitäisi yhtä APIa ruveta ihmettelmään kun loma loppuu :D
 
Liittynyt
07.01.2021
Viestejä
678
Onko kukaan tehnyt token-based authenticationia Flaskilla tehdyssä API:ssa? Olen käyttänyt sovelluksessa (jossa siis myös frontti on Flaskia) LoginManager-komponenttia, jossa on @login_required-dekoraattori. Tällä homma on toiminut jokseenkin automaattisesti. Mutta en tajua miten homman saa API:n kautta toimimaan tuolla dekoraattorilla. Tuo kun speksien perusteella lukee is_authenticated-muuttujaa User-luokassa. Tämä luokka siis on pitänyt määritellä, mutta en ole tuota muuttujaa määritellyt itse. Eli jotain magiaa jossain tapahtuu että tuo on True kun käyttäjä on autentikoitu.

Ongelma siis on siinä, että tokeni tulee headerissa takaisin ja enhän minä sitä voi tsekata ennen dekoraattoria ellen tee omaa dekoraattoria ja kietaise koko pakettia sen sisään. Mutta siinä tapauksessa en kyllä näe kauheasti käyttöä koko LoginManagerille. Eli onko tämä paras tai jopa ainoa järkevä tapa hoitaa homma:
  1. Loginissa tarkistetaan user/pass ja generoidaan tokeni joka tallennetaan kantaan käyttäjälle.
  2. Tokeni palautetaan frontille, joka tallentaa sen. Tällä hetkellä minulla tuo palautuu ihan datassa. Reactissa tallennan tokenin local storageen.
  3. Frontti lisää tuon tokenin jokaiseen headeriin.
  4. Bäkkärissä olisi dekoraattori, joka nappaa requestin headerista tokenin ja varmaankin käyttäjä-id:n (jottei tarvitse koko käyttäjäkantaa kelata) ja tsekkaa että token mätsää kannassa olevaan.
  5. Logoutissa sitten tokeni tyhjennetään sekä frontissa että bäkissä.
Sitten on vielä se, että miten cookieiden pitäisi toimia? Tallennetaanko sinne tuo tokeni ja id? Tähän pitäisi varmaan vielä lisätä elinaika cookielle.

Olen siis koittanut Postmanilla lähettää vastaanotetun tokenin headerissa, mutta @login_required palauttaa unauthorized. Mikä kyllä on sinällään ymmärrettävää, koska eihän ne sessiot enää tässä tilanteessa ole persistenttejä. Google ei oikein tähän keissiin anna hyviä apuja.
 
Liittynyt
07.01.2021
Viestejä
678
Ilmeisesti tuo kannattaisi tehdä flask_jwt_extended-paketin tarjoamilla funktioilla. Mutta jippii, tuon paketin asentaminen rikkoo koko sovelluksen, koska jotkut paketit ei ole yhteensopivia. Pakettien upgreidaaminen aiheuttaa aina lisää ongelmia milloin missäkin paketissa, vaikka siis asettaa netin syövereistä kaivetun ns. oikean version. Pääongelma näyttäisi olevan siinä, että flaskin uusin versio (2.2.0) bugittaa. Mutta jos tuon vaihtaa vaikka 2.1.0:aan niin sitten alkaa Werkzeug vittuilemaan. Ja jos tuon korjaa niin sitten on taas seuraava paketti rikki.

Tuon paketin kanssa siis tokenia pyöritetään cookieiden kautta suhteellisen simppelisi. Dekoraattorikin löytyy (@jwt_required). Mutta en tiedä onko tekemätön paikka kunnes korjaavat Flaskin.
 

jad

Liittynyt
22.10.2016
Viestejä
1 210
Aa.. Olipas piilossa tuolla sivulla tuo desktop appin lataus ainakin itselläni mutta löytyihän se sieltä... Pitääpä kokeilla josko tuosta olisi apua kun taas heti viikon päästä pitäisi yhtä APIa ruveta ihmettelmään kun loma loppuu :D
Ha, itsellenikin uusi tuttavuus tuo postmanin appi, hyvin tosiaan piilotettu.
Desktopissa on tullut käytettyä Insomniaa, joka myöskin joku electron kököstys.
 
Liittynyt
07.01.2021
Viestejä
678
Äh, voiko Postmanissa mitenkään tehdä tätä:

Haluaisin ajaa sekä 200- että 400-arvot palauttavia kyselyitä. Noita tulee kuitenkin aika paljon, joten olisi kiva käyttää collectionissa kaikille yhteistä testiä.

Ongelma on siinä, että molemmat keissit tarvitsevat Login-kutsun ajamista (paluuarvo 200). Jos teen alikansion virheille, niin se menee aina requestien yläpuolelle, eli en voi ajaa Loginia ennen erroreita, paitsi jos se on myös ko. kansiossa. Muuten voisin laittaa tuolle kansiolle eri testin. Loginia en siis voi laitttaa virhekeisseille tuon yhteisen testin kanssa, koska se feilaisi joka kerta.

Paras mitä keksin on tehdä oma kansio erroreille ja käsin kopioida jokaiselle tuo testi, jolla tsekataan paluuarvo.
 
Liittynyt
06.11.2016
Viestejä
1 749
Todella hyvä vaihtoehto Herokulle, nyt kun sieltä tippuu ilmaisversio kokonaan pois.
 
Liittynyt
01.02.2017
Viestejä
747
Todella hyvä vaihtoehto Herokulle, nyt kun sieltä tippuu ilmaisversio kokonaan pois.
Verceliin menee hyvin pyörimään suoraan gitistä ilmaiseksi myös.
Edit: Hyvä lisä nuo tietokannat Railwayssa.
 
Viimeksi muokattu:
Liittynyt
16.11.2020
Viestejä
2 566
Äh, voiko Postmanissa mitenkään tehdä tätä:

Haluaisin ajaa sekä 200- että 400-arvot palauttavia kyselyitä. Noita tulee kuitenkin aika paljon, joten olisi kiva käyttää collectionissa kaikille yhteistä testiä.

Ongelma on siinä, että molemmat keissit tarvitsevat Login-kutsun ajamista (paluuarvo 200). Jos teen alikansion virheille, niin se menee aina requestien yläpuolelle, eli en voi ajaa Loginia ennen erroreita, paitsi jos se on myös ko. kansiossa. Muuten voisin laittaa tuolle kansiolle eri testin. Loginia en siis voi laitttaa virhekeisseille tuon yhteisen testin kanssa, koska se feilaisi joka kerta.

Paras mitä keksin on tehdä oma kansio erroreille ja käsin kopioida jokaiselle tuo testi, jolla tsekataan paluuarvo.
Tsekkaa Wiremock. Näkyy löytyvän joku toteutus pythonillekin.

En saanu ihan tarkkaa käsitystä, mitä nää haluat tehdä, mutta tuo on ihan näppärä rajapintatoteutusten yksikkötestauksessa tai integraatiotestauksessa, missä taas Postman kuulostaa vähän ehkä väärältä työkalulta.

---

muoks. tuolla jotain tarinaa tuosta Wiremockista, vaikka onkin Javalle tarkoitettu: Introduction to WireMock - GeeksforGeeks

Mockitokin näkyy löytyvän myös Pythonille. Siinä lienee toinen mahdollinen kirjasto, josta voi olla apua testailussa.
 
Viimeksi muokattu:
Liittynyt
07.01.2021
Viestejä
678
Hep, keksinpä itse. Tuossa dialogissa, jossa valitaan testit on kaikki caset alekkain vaikka ne olisivat alakansioissa.

Caselistassa itsessään alikansiot tulee ennen requestejä, joten tyhmästi siis Login request on viimeisenä, myös tuossa listassa. Ensin ajattelin, että raahaan vaan aina loginin ensimmäiseksi ennen kuin ajan testit. Se vain ei kuulosta hupaisalta siinä vaiheessa kun testejä on kolminumeroinen määrä. Mutta tein sille oman kansion, niin sain tuon ekaksi. Nyt sitten voin ajaa kaikki testit haluamassani järjestyksessä. Eli tässä tapauksessa ensin login, sitten keissit joiden pitäisi palauttaa 200, sitten sellaiset joiden pitäisi palauttaa 400 ja lopuksi 401:t (joka taas onnistuu laittamalla No auth autentikaatioon).
 
Liittynyt
20.10.2016
Viestejä
403
Mikä on "standardi" tapa tallentaa Android äpin tiedot pilvipalvelimeen? Mieluiten käyttäisin pilvipalveluna Azurea, vaikka se lienee vähän monimutkaisempaa kuin Google Cloudin käyttäminen. Mulla on mielikuvana, että Azuren päässä mulla olisi RESTful API esim. logic appsilla tai function appilla toteutettuna, joka hoitaisi datan siirtämiset Azure SQL -kannan kanssa. Android äppi sitten kommunikoisi tuon RESTful API:n kanssa. Onko tällainen arkkitehtuuri yhtään sinne päin? Puuttuuko jotain oleellista?
 
Toggle Sidebar

Statistiikka

Viestiketjut
237 473
Viestejä
4 163 448
Jäsenet
70 414
Uusin jäsen
O&G

Hinta.fi

Ylös Bottom