Airbnb API: kuidas kasutada Mashvisori API-d Airbnb andmete saamiseks

Mashvisori API on kinnisvaraanalüüsi tööriist, mis pakub enamat kui lihtsalt põhifakte praeguste või võimalike omaduste kohta. Mashvisor võib statistiliste järelduste algoritmide abil edastada andmeid, mis võivad takistada kedagi tegemast halba kinnisvarainvesteeringut Airbnbi või traditsioonilise üürimise korral.

API-l on kaks peamist kategooriat:

  • Lühiajaliste üüride (Airbnb) või puhkuse rentimise nimekirjad
  • Pikaajaline rentimine (“traditsiooniline”)

API võib pakkuda üksikasjalikku teavet Airbnb konkreetsete omaduste kohta kuus, sealhulgas;

Lõppnäitajad jagunevad kategooriatesse nagu omand, rendihinnad, trendid, ennustatavad skoorid jne. Keegi võiks otsida üldisi turusuundumusi piirkonnas või nullist konkreetse Airbnb-i kinnisvara juures. Teil võib tekkida küsimus, miks me ei kasuta Airbnbi API-d konkreetsete kinnisvaraloendite saamiseks, kuna just seda me otsime.

Miks mitte kasutada ainult Airbnb API-d?

„Praegu ei võta me oma API-le vastu uusi juurdepääsutaotlusi. Meie globaalne partnerihaldurite meeskond jõuab potentsiaalsete partneriteni, lähtudes teie ettevõtte pakutavast pakkumisvõimalusest, teie tehnoloogia tugevusest ja võimest toetada meie ühiseid kliente. ” Airbnb veebisait

Kui arendaksime kasutajatele välja rakenduse, mis võimaldaks neil toiminguid teha (st värskendada loendeid), oleks meil otsene juurdepääs Airbnb API-le. Tõenäoliselt tuleks see juurdepääs muu kolmanda osapoole kaudu kui Airbnb.

Enne projekti koostamist oleks kasulik teada täpselt, millist tüüpi andmeid vajate küsimustele, millele proovite vastata. Mashvisori API-st saadav teave võiks:

  • Teatage potentsiaalsetele Airbnb-i võõrustajatele sellest, kas nad teevad hea või halva otsuse oma piirkonnas nimekirja kandmiseks
  • Aidake reisijatel otsustada, kas Airbnbi või muude renditeenuse pakkujate kasutamine on ökonoomne

Mashvisor on enamasti analüütiline ja informatiivne ning ei tee toiminguid oma konto kasutajate jaoks.

Sellel API-l on palju võimalusi, kuid kõigepealt hakkan arutama, kuidas seda kasutada. Siis võime vabalt haarata statistika, mida soovime aidata meil (või kasutajatel) teha andmepõhiseid kinnisvaraotsuseid.

Kuidas kasutada Mashvisori API-d Airbnb-andmete saamiseks

Mashvisori API kasutamiseks on meil vaja kontot RapidAPI-ga ja tellimust (vt API dokumentatsiooni siit).

Valige Basic tellimus, mis annab meile saja API-kõne kuus. Pärast esimest sada maksab see 0,10 dollarit päringu kohta. Pidage meeles, et me saame alati oma rakendusi vaadata ja hallata RapidAPI arendaja juhtpaneelil. Te ei tohiks hiljem oma näites kvoodile läheneda, kuid kui tunnete, et lähenete lähemale, laske armatuurlaud valmis.

Ainult sajaga kuus peame olema nutikad selle osas, kuidas me andmeid haarame ja kui palju neist andmetest korraga haarame. Kasulikku teavet leiame API-lt. RapidAPI-s otsige „Mashvisor“ ja valige pärast selle esitamist suvand.

Vasakpoolses jaotises on loetletud HTTP-päringud, mida saame teha. Kui valime päringu tüübi, kuvatakse keskmises osas meile selle päringu valikulised ja nõutavad parameetrid.

Keskmise osa ülaosas näete iga näitaja lühikest kirjeldust.

Keskmise sektsiooni parameetrid on tegelikult sisendid ja kui me neid sisendeid muudame, muutuksid ka paremas sektsioonis olevad koodilõigud! Parempoolses jaotises on ka näidisvastused, et saaksime hinnata, milliseid andmeid me näitajast saame.

Parempoolse jaotise ülaosas on rippmenüü, kus saame valida selle keele erinevad keeled ja erinevad raamatukogud. Koodilõigud paistavad silma värvi eripära tõttu, mis on keelele omane. Me kavatseme seda lõikude koostajat kasutada meie käsuridarakenduses NodeJS.

Kus iganes näete „lühiajalist rentimist”, tähendab see enamasti Airbnb-d.

Mashvisoril on mõned ennustatavad hinded, mille nad genereerivad oma algoritmidega, sealhulgas:

  • Mashmeter
  • Vara soovitus
  • Investeerimise tõenäosus

Neist hakkame kasutama ainult näites Mashmeterit, mida kirjeldatakse järgmiselt:

Ainulaadne Mashvisori kujundatud skoor, mis näitab naabruses investeerimise võimaluse üldhinnangut protsentides.

Nende punktide kohta saate rohkem lugeda Mashvisori API juhtpaneeli lehelt.

Loodan, et ehitate põnevusega käsuridarakendust NodeJS, mis võimaldab meil luua isikupärastatud investeerimisaruandeid, tuginedes meie kohalikule naabrusele!

Näidisrakendus: kas ma peaksin tavapäraselt rentima või Airbnb'is nimekirja kandma?

Mashvisor pakub kasulikku analüütilist teavet, nii et me ehitame NodeJS-i abil käsurida-liidese, mis kogub statistikat, mis aitab vastata küsimusele: “Kas ma elan naabruskonna põhjal, kas ma peaksin rentima lühiajaliselt Airbnb-ga või traditsiooniliselt? ” . Rakendus tabab ainult mõnda lõpp-punkti, kuid seda saab laiendada mitut tüüpi aruannete väljastamiseks.

See kasutab populaarseid npm teegid nagu Yargs, Axios ja Chalk. See kasutab NodeJS-i tööriistu nagu hävitamine, asünkroonimine / ootamine, plokkide proovimine / püüdmine ja stringide tähtkirjad.

Loodan, et see inspireerib teid ehitama midagi veelgi suuremat ja paremat, nii et alustame!

Eeltingimused

  • Peate olema käsurea tööriista avamise ja kasutamise teadmised.
  • Põhiteadmised NodeJS-ist või JavaScriptist
  • Soovite ühte sõlme uuemat versiooni. Ma kasutan 10.16 ja installitud on uusim versioon npm-st. Ma kasutan 6.13.0, kuid hea, kui on vähemalt 5.6.
  • Interneti-ühendus.
  • Kasutan MacOS-is UNIX-i käsuridariba. Selle käsurida saab aga installida Windows 10-le.
  • RapidAPI konto ja Mashvistri API põhiline (tasuta) tellimus.

Projekti seadistamine

  1. Avage uus terminal (käsu- ja tühikuriba, seejärel otsige Macist terminit).
  2. Liikuge kataloogi, mis on mõttekas, kasutades käsku cd. Kui soovite vaadata, millised kataloogid asuvad praeguse kataloogi all, sisestage CD, seejärel vajutage kaks korda nuppu Tab. Kuvatakse kataloogivalikud. Nüüd saab käivitada käske, mis järgivad seda vormingut -> cd madalam_kataloog / kataloog_veeb_that_et.
  3. Looge uus kataloog käsuga mkdir [name_of_directory]
  4. cd sellesse kataloogi. Pwd abil saate kontrollida, kas olete õiges kohas. See tähistab Print Working Directory.
  5. Initsialiseerige uus npm moodul, käivitades npm init -y. Kui käsk käivitataks ilma -yta, kuvatakse ekraanil küsimused, mis paluvad teil kirjeldada ja määratleda uue mooduli npm aspekte. See pole selle õpetuse jaoks vajalik ja käsu käivitamine lipuga -y jätab selle protsessi vahele. Hoidke see terminal lahti, kuna installime hiljem npm pakette ja käivitame käsud juurprojekti kataloogist.
  6. Avage projekti kataloog oma valitud koodiredaktoris. Ma kasutan Visual Studio koodi, nii et ma käivitan selle, mis avab VSCode kataloogis, kus ma praegu viibin.

Nüüd on meil värske NodeJS-i projekt, millega töötada.

Käsurea argumentide mõistmine

See projekt loob aruanded Mashvisori API tagastatud andmete põhjal. Tahame võimaluse neid andmeid säilitada. See tähendab, et meil on vaja käske lisada, vaadata, loetleda ja eemaldada. Kavatseme oma projektis selleks kasutada Yargs'i raamatukogu, kuid kõigepealt vajame natuke rohkem mõistmist, kuidas oma käskudega argumente edastada.

  1. Looge projektikataloogis fail nimega cli.js.
  2. Sisestage koodikonsool.logi (protsess.argv)
  3. Sisestage terminali järgmine käsk: node cli.js "test". Peaks olema kuvatud loend koos mõne üksusega. Üks neist elementidest peaks olema "test". Meie käsk käivitab faili cli.js, kasutades NodeJS, ja talletab selle argumendi massiivina, millele saame failis juurde pääseda. Nii edastame andmeid oma projekti.

Selle muutuja juurde pääsemine võib aga olla segane. See näeks välja nagu protsess.argv [2]. Õnneks on olemas npm teek, mis lisab need argumendid objektile ja annab meile võimaluse ehitada käsud nende argumentide põhjal: Yargs.

4. Liikuge tagasi terminali juurde ja installige Yargs käsuga npm install yargs --save.

5. Cli.js-s peame importima oma uue mooduli ja parsima oma uue objekti. Lisage sellele failile allpool olev kood.

6. Sisestage sõlm cli.js --argument = "test". Te peaksite nägema meie esimest argumenti logitud ja uut objekti, millel on võti 'argument' ja väärtus 'test'

Meie käskude loomine

  1. Tehke uus kataloog meie projekti juur, cmds.
  2. Tehke seest teine ​​kataloog, mille nimi on report_cmds.
  3. Looge fail_adds.js aruannete_cmdsides.

Võiksime kõik oma käsud ühte faili panna, kuid see võib segaseks jääda. Selle asemel ehitame oma rakenduse nii, et igal käsul on oma fail.

4. Add.js lisage järgmised üksused.

export.command = 'add' // käsu nimi export.desc = 'Lisab uue aruande' // käsu kirjeldus export.builder = {} // ehitage ja kirjeldage argumente export.handler = function (argv) {console.log ("Lisab uue aruande") // funktsioon käivitatakse, kui käsk kutsutakse}

Selles failis ekspordime käsu 'lisa' atribuute.

  • käsk: käsu süntaks
  • desc: käsu toimimise kirjeldus
  • ehitaja: kirjeldage argumente, millega meie käsk nõustub
  • käitleja: funktsioon käsu väljaandmisel.

Kui käitaksime käsku nagu sõlm cli.js, siis eeldame, et see käivitatakse. See aga ei tööta, kuna Yargs pole meie käsukataloogist teadlik. Peame tegema mõned muudatused, et see leitaks.

5. Asendage cli.js-is kogu seal olev kood alloleva koodiga.

nõuda ('yargs') .commandDir ('cmds') // leiab käsukataloogi .demandCommand () .help () // võimaldab meil kasutada abikäsku .argv // parsib argumendid

See võib olla segane vaadata, kuid ehitame käsumooduli, mis võimaldab meil luua keerukaid käske. Kui soovite rohkem konteksti selle koodi jaoks, tõmmatakse see yargi dokumentatsioonist.

6. Looge fail cmds / kataloogis nimega reports.js. See fail näeb välja palju nagu cli.js.

// aruanded.js
export.command = 'aruanded 'export.desc =' Halda aruandeid 'export.builder = funktsioon (yargs) {return yargs.commandDir (' report_cmds ') // leidke aruande käsud} export.handler = function (argv) {}

Võite märgata, et selle faili käsk näeb veidi erinev. Süntaks on kohatäide, mis näitab, et argument on kohustuslik. Kui käsk oleks valikuline, pakitakse see käsku [].

7. Väljuge terminalis ikkagi meie kataloogi juurest käsklusõlm cli.js help

Käsud: cli.js teatab Hallake aruandeid
Valikud: --versioon Näita versiooni numbrit [loogiline] - abi kuvab abi [tõeväärtus]

Te peaksite nägema meie käsu kirjeldust (saidilt reports.js) ja muid võimalusi. Proovige uuesti, kuid sisestage seekord sõlm cli.js aruannete abi.

Te peaksite nägema meie lisamiskäsku koos selle kirjeldusega.

Käsud: cli.js aruanded lisavad Lisab uue aruande

8. Veebisaidi add.js kaudu peame seadistama argumendid, mida parameetrina oma API kõnesse edastame. Käsk näeb välja selline:

See tähendab, et lisamiskäsk võtab vastu kolm vajalikku argumenti. Objekti export.builder kasutatakse argumendi kirjeldamiseks, selle märgistamiseks vastavalt vajadusele või mitte ning argumendi tüübi (stringi, numbri jms) täpsustamiseks.

// add.js
... export.builder = {nimi: {kirjeldage: 'Aruande nimi.', demandOption: true, // muudab selle vajalikuks tüübiks: 'string' // define object}, ... ...

9. Lisage allpool kood, et add.js

export.command = 'lisa 'export.desc =' Lisage uus aruanne 'export.builder = {nimi: {kirjeldage:' Aruande nimi. ', demandOption: tõene, tüüp:' string '}, asukoht: {kirjeldage:' Mashvisori naabruskonna ID andmete kogumiseks jaoks. ', demandOption: tõene, tüüp:' number '}, olek: {kirjeldage:' Andmete otsimise olek. ', demandOption: tõene, tüüp:' string '},} export.handler = funktsioon (argv) { console.log ('Lisab aruande')}

See on meie esimene tõeline käsk. Selleks on vaja kolme argumenti. Sellel pole funktsiooni, kui seda kutsutakse, kuid see töötab varsti.

10. Käitage sõlme cli.js aruannete abi ja vaadake meie käsku add koos argumentide ja kirjeldustega. Lisaks saate käivitada sõlme cli.js aruannete lisamise, mis ebaõnnestub, kuid see näitab kirjeldusi ja argumenditüüpe, mida käsk vajab.

11. Loendi kuvamise, kuvamise ja eemaldamise käskude failid on väga sarnased. Aja jaoks looge iga fail kataloogist report_cmds / kataloog (list.js, remove.js, view.js) ja lisage neile failidele vastav kood.

// nimekiri.js
export.command = 'list' export.desc = 'Kõigi aruannete loetelu' export.handler = () => {console.log ('Loendi kõik aruande pealkirjad')}
Vaata kogu koodi aadressil https://rapidapi.com/blog/mashvisor-api-airbnb-data/

Põhifunktsioonide käitlejate loomine

Igal käsul on käitleja. See on funktsioon, mida kutsutakse käsu väljastamisel. Peame need funktsioonid looma, kuid teeme seda eraldi failina.

  1. Projekti juurkataloogis looge fail report.js.
  2. Selles failis on meil käskude funktsioonid. Peame need funktsioonid failist eksportima.
const listReports = () => {// loetleb aruande pealkirjad}
const addReport = async (nimi, NeighborhoodId) => {// lisab aruande}
const viewReport = (nimi) => {// prindib aruande andmed}
const removeReport = (nimi) => {// eemaldab aruande aruannetest.json}
module.exports = {addReport, removeReport, listReports, viewReport,}

Meie aruande andmed salvestatakse loendina kohalikus failis. Siin loeme, salvestame, laadime ja eemaldame aruande andmeid kaustast.

3. Looge fail juurda juurkataloogi juulis juulis fail aruanded.json ja pange sinna loend, millel on näidisobjekt [{"nimi": "test", "asukoht": 54678}]

Meil on vaja kahte abistajafunktsiooni, mis laadivad aruanded saidilt reports.json, ja ühte, mis salvestaks aruanded tagasi sellesse faili. Me teeme seda NodeJS-i sisseehitatud mooduli fs abil. Peame seda nõudma aruannete.js ülaosas.

4. Lisage see kood report.js algusesse.

const fs = nõuda ('fs')
const loadReports = () => {proovige {lase {lase reportsBuffer = fs.readFileSync ('./ Report.json'); // faili leidmine ja laadimine lase ReportJson = reportsBuffer.toString (); // puhvri teisendamine stringi naasmiseks JSON.parse (reportsJson); // sõeluda stringi objektiks} saagi (e) {tagastama []; }}
const saveReports = (aruanded) => {const dataJson = JSON.stringify (aruanded); fs.writeFileSync ('reports.json', dataJson); } ...

5. Nüüd saame luua loendifunktsiooni. See on lihtne funktsioon, mis haarab aruanded üles ja prindib seejärel aruande pealkirjad konsooli. Me hakkame seda vürtsitama Kriidi raamatukoguga. Installige kriidikogu koos npm-ga installige kriit - salvestage

Kriit lisab konsooli väljundisse värvi. Kriidi kohta saate rohkem lugeda selle npm lehelt.

6. Lõpetage failide loendis sisalduv loendifunktsioon ja importige faili ülaosas kriit

const kriit = vaja ('kriit') ... const listReports = () => {const report = loadReports (); report.map ((report, i) => {console.warn (chalk.white.bgBlue (`$ {report.name}`));})} ...

Oleme peaaegu valmis oma esimest käsku testima, kuid me pole seda funktsiooni lisanud käskfaili list.js.

7. Aadressis list.js asendage console.log ('Loetlege kõigi aruannete pealkirjad') report.listReports () ja lisage faili ülaossa;

const aruanded = vaja ('../../ aruanded');

8. Käitage sõlme cli.js aruannete loend. Te peaksite nägema meie nime ja ainult siis, kui aruanne trükitakse sinise taustaga konsooli.

Järgmisena hoolitseme kiiresti käsu eemaldamise eest. See funktsioon võtab nime (aruande nimi) ja seejärel eemaldab selle aruannete loendist saidil reports.json. See eemaldab selle, lihtsalt ei salvestata faili koos ülejäänud aruannetega pärast filtreerimist.

9. Lisage see kood atasast.js eemaldamise funktsioonile

... const removeReport = (nimi) => {proovige {const reports = loadReports (); // laadige aruanded sisse newReports = reports.filter (report => report.name! == name); // filtreerige, et saada aruandeid, mis ei vasta nimele, kui (aruanded.pikkus> newReports.length) {saveReports (newReports); // salvestage uute aruannete loend faili console.log (chalk.green.inverse ('Aruanne eemaldatud!'))} else {console.log (chalk.red.inverse ('Aruannet ei leitud')); }} saak (e) {tagasta e}} ...

10. Lisage funktsioon remove.js faili console.log (...) asemel ja importige aruandeobjekt.

// eemalda.js
const aruanded = nõua ('../../ aruanded') ... ... export.handler = funktsioon (argv) {reports.removeReport (argv.name)}

Pange tähele, et me edastame nime argumendi funktsioonile argv objekti kaudu. Selle objekti sees on omadus "nimi", mis hoiab käsuridalt üle antud väärtust.

Lõpuks on aeg luua käsk add, mis hangib Mashvisori API-st Airbnb ja traditsioonilise kinnisvara andmed.

Andmete toomine Mashvistrist (Airbnb API integratsioon)

Lisamise käsk;

  • Haarake Mashvisori andmed
  • Valige andmed, mida tahame säilitada
  • Salvestage need andmed kausta JavaScripti

Kavatseme oma HTTP-kõned luua Axiosse eraldi faili. Veenduge, et olete endiselt projekti kataloogi juur.

2. Looge faili api.js projekti juuri. Importige sellesse faili aksioosid ja lisage järgmine kood, nii et fail näeb välja selline:

const axios = vaja ('axios')
const instance = axios.create ({ajalõpp: 1000, päised: {// siia lisatud päised rakendatakse kõigile 'esinemisjuhtudele' // allpool moodulis.exports}});
module.exports = {util: {// lisame oma API kõned siia getNeighborhoodOverview: (linn, osariik) => näiteks ({})}, airbnb: {// airbnb api kõned siin}, traditsiooniline: {/ / traditsioonilised api kõned siin}}
vaata kogu koodi aadressil https://rapidapi.com/blog/mashvisor-api-airbnb-data/

Saame luua kõik oma API-kõned ühes failis ja eksportida need erinevatele objektidele lisatud funktsioonidena. Pange tähele, et loome util-objektile funktsiooni nimega 'getNeighborhoodOverview' ja anname sellele kaks meie käsuridaargumenti 'NeighborhoodId' ja 'state'.

See aitab meie koodi korrastada ja võimaldab meil hõlpsalt luua Axios-eksemplari, mis salvestaks päised, mida me iga päringu jaoks vajame.

Kahjuks ei saa ma Axiosi raamatukogu ja eksemplaride üksikasju uurida, kuid selle kohta saate lugeda siit.

3. Minge brauseris Mashvisori API-le ja vasakul paneelil vahekaardi "Otsi" alt valige "Naabruskonna ülevaade".

4. Valige selle lehe paremal paneelil kood rippmenüüst ja leidke "Node.js". Peaks olema veel üks külgriba, mille loend on „Axios”. Leidke see ja valige 'Axios'.

HTTP-päised paigutatakse ülaosas asuvasse Axios-eksemplari. Meetod, URL ja parameetrid lähevad meie funktsioonikõnesse. Pärast koodilõigust asjakohaste andmete ekstraheerimist peaks api.js-il olema see kood failis.

const axios = vaja ('axios') 
vaata kogu koodi aadressil https://rapidapi.com/blog/mashvisor-api-airbnb-data/

Praeguse URL-i probleem on selles, et see pole dünaamiline. Me vajame käsurida muutujate otse stringi.

5. Asendage URL-i mõlemas otsas olevad tsitaadid lüngaga `. See loob stringi sõnasõnalise ja võimaldab meil sisestada muutujad stringi süntaksiga $ {muutujaName}.

6. Asendage URL-is NeighborhoodId sõnadega $ {NeighborhoodId} ja olekuparameetri väärtus olekumuutujaga, nii et meie API-kõne näeb välja selline:

... "meetod": "GET", "url": `https: //mashvisor-api.p.rapidapi.com/neighborhood/$ {neighborhoodId} / bar`," params ": {" state ": state } ...

Nüüd, kui meie esimene API-kõne on üles seatud, peame selle funktsiooni importima aruannetesse.js ja kutsuma selle funktsiooni addReport sisse.

7. Importige {util} aruannetesse.js ja kutsuge seda funktsioonis asünkroonselt.

... const {util} = nõuda ('./ api') ...
... const addReport = async (nimi, naabruskonna ID, olek) => {proovige {// {andmed: [nimi]} tõmbab andmeobjekti vastusest välja ja nimetab selle ümber // Hankige andmed naabruskonna ülevaate jaoks const {data: OverviewData} = oodake util.getNeighborhoodOverview (naabruspiirkonna ID, osariik)
// Aidake objekti sügavusest madalamale saada const NeighborhoodOverview = ülevaateData.content;
} catch (e) {console.log (e) return console.log (chalk.red.inverse ('Viga andmete aruande hankimisel))}} ...

Ma näppisin selle koodi lisamisega veel mõnda asja. Me hävitame Axiose vastuse, tõmmates selle andmeobjekti andme andmed ja nimetades selle ümbervaateks.

Seejärel asume sügavamale naabruskonna ülevaate muutuja reageerimiskehasse, kuna sisu on pisut kaugemal. Me teame seda, vaadates RapidAPI armatuurlaual olevaid vastuste näiteid.

Selles funktsioonis puuduvad neli asja:

  1. Laadimine aruannetes
  2. Nime duplikaadi otsimine
  3. Andmete valimine reageerimisobjektilt
  4. Aruannete salvestamine

8. Lisage funktsiooni addReport () ülaossa üleskutse loadReports () ja salvestage tulemus muutuja aruannetesse.

9. Kasutage Javascripti leidmist () funktsiooni, et korrata aruandeid ja otsida duplikaadi nime.

10. Kui duplikaati pole, helistage API-le, kui see on olemas, logige seda seletav sõnum sisse. Pärast neid täiendusi on funktsioonil kood;

... const addReport = async (nimi, naabruskonna ID, olek) => {const aruanded = loadReports (); const duplicateReport = reports.find (report => report.name === name);
if (! duplicateReport) {proovige {// {andmed: [nimi]} tõmbab andmeobjekti vastusest välja ja nimetab selle ümber // Hankige andmed naabruskonna ülevaate jaoks const {data: OverviewData} = oodake util.getNeighborhoodOverview (NeighborhoodId, olek) / / Aidake objekti sügavusest madalamale saada const NeighborhoodOverview = ülevaateData.content;
} catch (e) {console.log (e) return console.log (chalk.red.inverse ('Viga andmete aruande hankimisel))}} else {console.log (chalk.red.inverse (' Aruanne on juba olemas ') ))}} ...

Aruande andmete salvestamine on üsna lihtne. Peame selle lihtsalt oma muutujasse viima ja seejärel kutsuma funktsiooni saveReports (). Enne seda peame tegelikult sõeluma andmed, mida vastusest soovime.

11. Looge meie kataloogi juuri kaust util ja lisage fail cleanData.js.

Ma tean, et kõigi nende failide ja kaustade loomine võib tunduda vaeva, kuid kui loodame ehitada suuremaid ja põnevamaid rakendusi, on oluline pöörata tähelepanu oma projekti korraldamisele. Me ei taha jama teha.

See funktsioon võtab vastu väikese reageerimisobjekti, määrab väärtused uutele atribuutidele ja tagastab seejärel objekti. Olen juba RapidAPI armatuurlaual reageeringuobjektile pilgu heitnud ja valinud objektist Airbnb ja traditsioonilised kinnisvaraandmed, mida kasutada.

See näib olevat palju koodi, kuid suurem osa sellest on lihtsalt muutuja ja objekti määramine.

12. Lisage allolev kood saidile cleanData.js.

const cleanData = async (nimi, NeighborhoodId) => {
// Haarake andmed reageerimisobjektilt ja määrake uutele muutujatele const airbnb_properties = NeighborhoodOverview.num_of_airbnb_properties; const traditional_properties = NeighborhoodOverview.num_of_traditional_properties; const mash_meter = NeighborhoodOverview.mashMeter; const avg_occupancy = NeighborhoodOverview.avg_occupancy; const roi_airbnb = NeighborhoodOverview.airbnb_rental.roi; const roi_traditional = NeighborhoodOverview.traditional_rental.roi; const cap_rate_airbnb = NeighborhoodOverview.airbnb_rental.cap_rate; const cap_rate_traditional = NeighborhoodOverview.traditional_rental.cap_rate; const rent_income_airbnb = NeighborhoodOverview.airbnb_rental.rental_income; const rent_income_traditional = NeighborhoodOverview.traditional_rental.rental_income;
// Loo objekt, mis tagastatakse ja lisatakse aruannetesse, vaata ülejäänut aadressil https://rapidapi.com/blog/mashvisor-api-airbnb-data/

Nüüd on meil objekt koos kümne kasuliku andmepunktiga Airbnb ja antud naabruses asuvate traditsiooniliste rendipindade kohta.

13. Saate selle objekti tagasi funktsioonis addReport () ja salvestage see meie faili reports.json. Peame ka veenduma, et impordime funktsiooni cleanData (). Fail ja funktsioon peaksid nüüd sarnanema;

... const cleanData = nõuda ('./ util / cleanData')
... const addReport = async (nimi, naabruspiirkonna ID) => {konstrateegiad = loadReports (); const duplicateReport = reports.find (report => report.name === name);
vaata ülejäänud lehel https://rapidapi.com/blog/mashvisor-api-airbnb-data/

Mõni aeg on meil käsurida kasutatud, kuid on aeg testida käsku add, et veenduda, kas meie käsud tegelikult selle funktsiooni saavutavad.

Kui prooviksime käsurida kaudu nime, asukoha ja oleku argumente edastada, siis see nurjub. Me ei ole funktsiooni addReport (argv.nimi, argv.location, argv.state) funktsioonikõnet lisanud oma käsu käitlejasse.

14. Impordi funktsioon addReport ja helistage sellele aadressil add.js. Lisage kindlasti kolm argumenti, mis argv objektist tõmmatakse.

Failil on nüüd kood:

const aruanded = vaja ('../../ aruanded');
export.command = 'lisa 'export.desc =' Lisage uus aruanne 'export.builder = {nimi: {kirjeldage:' Aruande nimi. ', demandOption: tõene, tüüp:' string '}, asukoht: {kirjeldage:' Mashvisori naabruskonna ID andmete kogumiseks jaoks. ', demandOption: tõene, tüüp:' number '}, olek: {kirjeldage:' Andmete otsimise olek. ', demandOption: tõene, tüüp:' string '},} export.handler = funktsioon (argv) { report.addReport (argv.nimi, argv.lokatsioon, argv.state)}

Proovime, kas argumendid on jõudmas funktsiooni addReport ().

15. Kommenteerige funktsiooni API kutset ja lisage:

console.log (nimi, naabruskonna ID, osariik)

Kommenteeritava koodi kohal. Enne vea viskamist peaks see argumendid logima.

16. Käivita sõlme cli.js aruanded lisavad "test" 45624 "WA"

// konsooli väljund ... test 45624 WA // meie sisestatud argumendid! ReferenceError: OverviewData pole määratletud // ülejäänud virn ...

Täiuslik! Meie argumendid on jõudmas funktsiooni juurde ja neid saab nüüd kasutada API-üleskutses Mashvisorile.

17. Tühjendage kood ja kustutage konsoolilogi. Meie esimese tegeliku aruande lisamiseks käivitage järgmine käsk:

sõlme cli.js aruanded lisavad "esimese aruande" 271841 "WA"

Vaadake saidi report.json sisemust ja te peaksite nägema meie näiteandmeid ja meie esimese aruande andmeid!

Me peame tegema veel kaks asja.

  1. Lõpetage funktsioon viewReport (nimi), et saaksime neid andmeid kenasti kuvada.
  2. Kirjutage käsk, mis leiab meie praegusele asukohale lähima naabruskonna.

Vaatefunktsioon

Selle funktsiooni täitmiseks peame:

  • Laadige aruanded (meil on selleks funktsioon)
  • Vaadake, kas eesnimi möödus argument on õige ja;
  • Helistage funktsioonile, mis prindib aruanded

Me kasutame lisafunktsiooni peaaegu identset koodi.

// aruanded.js ... const viewReport = (nimi) => {const reports = loadReports (); lase leitud = aruanded.find ((aruanne) => aruande.nimi === nimi) // kui aruanne leitakse, kutsuge funktsioon, mis prindib andmed konsooli} ...

2. Seadistage if / else plokk funktsiooni helistamiseks, kui selle nimega aruanne leitakse. Kui ei vasta vastetest, logige sisse, et aruannet ei leitud.

// aruanded.js ... const viewReport = (nimi) => {const reports = loadReports (); lase leitud = aruanded.find ((aruanne) => aruande.nimi === nimi), kui (leitud) {printBasicReport (leitud); // pole veel olemas} else {console.log (chalk.red.inverse ('Seda aruannet ei leitud.))}} ...

Funktsiooni printBasicReport (leitud) pole veel olemas.

3. Looge projekti kataloogi nimega print_report uus kataloog ja looge selle kataloogi sees fail nimega printBasicReports.js.

Konstrueerime massiivi, mille väärtusteks on väiksemad massiivid. Igal massiivil on kaks asja.

  1. Prinditavate andmete silt.
  2. Leitud objekti vastavad andmed, mille me talle edastame.

4. Sisestage allolev kood meie uude faili.

// printBasicReport.js
const printBasicReport = (leitud) => {
const reportLines = [["Aruande nimi", leitud.nimi], ["Asukoht", leitud.neighborhoodId], ["Airbnb omadused", found.airbnb_properties], ["Traditsioonilised atribuudid", found.traditional_properties], ["Mash Meter ", found.mash_meter], [" Keskmine hõivatus ", found.avg_occupancy], [" ROI - Airbnb ", found.roi_airbnb], [" ROI - Traditional ", found.roi_traditional], [" Cap Rate - Airbnb ", found.cap_rate_airbnb], [" Cap Rate - Traditional ", found.cap_rate_traditional], [" Rental Income - Airbnb ", found.rental_income_airbnb], [" Rental Income - Traditional ", found.rental_income_traditional],]
// korrake üksusi üle ja printige need konsooli}
moodul.exports = printBasicReport;

Tõmmame leitud esemest esemed välja ja sobitame selle kergemini loetava sildiga.

Järgmisena lisage protsessile kriit ja console.log () meie andmed ja sildid.

5. Lõplikul printBasicReports.js failil on kood;

const kriit = nõua ('kriit') // impordi kriit
const printBasicReport = (leitud) => {const labelText = chalk.white.bgCyan; // loo kriidi abil funktsioon
const reportLines = [["Aruande nimi", leitud.nimi], ["Asukoht", leitud.neighborhoodId], ["Airbnb omadused", found.airbnb_properties], ["Traditsioonilised atribuudid", found.traditional_properties], ["Mash Meter ", found.mash_meter], [" Keskmine hõivatus ", found.avg_occupancy], [" ROI - Airbnb ", found.roi_airbnb], [" ROI - Traditional ", found.roi_traditional], [" Cap Rate - Airbnb ", found.cap_rate_airbnb], [" Cap Rate - Traditional ", found.cap_rate_traditional], [" Rental Income - Airbnb ", found.rental_income_airbnb], [" Rental Income - Traditional ", found.rental_income_traditional],]
// korratakse ridade üle, lisades mõne vormingu reportLines.map (rida => {console.log (labelText (rida [0])) + ": \ n \ t" + "----" + rida [1])} )}
moodul.exports = printBasicReport;

6. Liikuge tagasi saidile Report.js ja importige uus funktsioon ülaosas

// aruanded. js ... const printBasicReport = nõuda ('./ print_report / printBasicReport') ...

See käsk on peaaegu kasutamiseks valmis, kuid me peame funktsiooni view.js lisama

7. Lisage funktsioon view.js

// view.js const raportid = nõua ('../../ aruanded') // funktsiooni importimine faili export.command = 'vaade 'export.desc =' Vaadake ühte aruannet 'export.builder = {nimi: {kirjeldage: "Aruande nimi, mida soovite vaadata.", demandOption: true, type:' string '}} export.handler = function (argv) {aruanded.viewReport (argv.nimi) // kõnefunktsioon ja andke sellele nimi argv objektist}

8. Täitke käsk meie kataloogi juurtes

sõlme cli.js aruanded vaade "esimene aruanne"

Konsooli väljund peaks välja nägema selline!

See on palju kasulikku teavet ainult ühe API-kõne kaudu. Me võime Mash Meterit kasutada ennustava juhendina või lihtsalt võrrelda investeeringutasuvuse ja renditulu Airbnb ja traditsiooniliste meetodite vahel.

Kui soovite teabe hiljem salvestada, saate käsu abil projekti väljundi lihtsalt teise faili suunata;

sõlme cli.js vaade [name_of_report]> failinimi.txt

See loob faili ja kirjutab need välja nagu faili sisu.

Leidke oma lähim naabruskond

Ma viskan teile kaks faili, mis võimaldab teil sisestada oma koordinaadid ja saada lähim naabruskonna ID.

Esimene neist on leid-lähim.js. See on uus käsk ja uus fail läheb kausta / cmds / kataloogis.

const findClosestNeighborhood = nõuda ('../ util / findClosestNeighborhood')
export.command = 'leidke lähim 'export.desc =' Leiab sulgeb naabruskonna id 'export.builder = {lat: {kirjelda:' Praeguse asukoha laius ', demandOption: true, type:' number '}, long: {kirjelda:' praeguse asukoha pikkuskraad ' , demandOption: tõene, tüüp: 'number'}, linn: {kirjeldama: 'Linn asub asukohas', demandOption: tõene, tüüp: 'string'}, olek: {kirjeldama: 'Teatage, kus asukoht asub', demandOption : true, type: 'string'},} export.handler = function (argv) {findClosestNeighborhood (argv.lat, argv.long, argv.city, argv.state)}

Järgmine fail oli selle lehe ülaosas imporditud fail (kui märkasite).

2. Looge kataloogis kataloogi fail findClosestNeighborhood.js ja lisage kood:

const {util} = nõua ('../ api') const kriit = nõua ('kriit')
vaata kogu koodi aadressil https://rapidapi.com/blog/mashvisor-api-airbnb-data/

See fail võtab teie koordinaadid, saadab päringu Mashvisori lõpp-punktile 'Naabrite nimekiri' ja saab tagasi teie linna naabruskonda esindavate objektide loendi.

Seejärel võrdleb esitatud koordinaadid iga naabruskonna koordinaatidega ja teeb kindlaks, milline on lähim. See ei ole täiuslik kauguse arvutamise funktsioon, kuid on meie jaoks piisavalt lähedal.

Peame API-kõne lisama api.js asuvale utiliobjektile.

3. Lisage naabruskonna HTTP-taotlus api.js-le meie eelmise API-kõne alla.

// api.js
... moodul.exports = {util: {... getNeighborhoodsInArea: (linn, osariik) => eksemplar ({"meetod": "GET", "URL": `https: //mashvisor-api.p.rapidapi .com / linn / naabruskonnad / $ {riik} / $ {linn},})}, ...}

4. Hankige oma asukoha või mis tahes huvitava asukoha koordinaadid. Kui vajate abi laius- ja pikkuskraadi koordinaatide saamiseks, on Google abiks.

5. Täitke lähima leidmise käsk koordinaatide, linna ja osariigi abil.

Juhtisin asukoha Kapitooliumi mäel Seattle'is.

sõlm cli.js lähim 47.627464 -122.321387 "Seattle" "WA"

Ja konsoolis logiti lähim naabruskond.

Lähim naabruskond on Broadway, ID-ga 250150

Ma saaksin nüüd oma uue aruande Mashvisori naabruse ID-ga käsku Add Add Report uuesti käivitada!

Ongi!

Edasi liikuma

See rakendus hõlmas palju teemasid ja jättis vahele ka mõned neist. See on üles seatud nii, et looja saab luua modulaarseid käske, aruandeid ja lihtsustada nende HTTP päringukoodi.

Üks raskemaid aspekte API-st andmete hankimisel on andmete tõmbamine reageerimisobjekti sügavusest. See ülesanne maksustab eriti siis, kui oleme selle rakenduse ehitanud 10 või 20 API-kõne saamiseks.

Kui me mõlemad nõustume, et objektidesse kaevamine on natuke tüütu, peaksite kontrollima GraphQL-i, sest RapidAPI lisas hiljuti seda tüüpi päringikeele toe.

Lisage aga soovi korral rakendusele rohkem HTTP-kõnesid!

Seotud ressursid

  • Parimad geokoodide ja asukoha API-d
  • Parimad hotelli API-d
  • Mobiilirakenduste arendusliidesed
  • Kuidas luua rakendus Airbnb?

Algselt avaldati see aadressil https://rapidapi.com 27. jaanuaril 2020.