Airbnb API: Airbnb деректерін алу үшін Mashvisor API-н қалай пайдалануға болады

Mashvisor API - бұл жылжымайтын мүлікті талдау құралы, ол ағымдағы немесе ықтимал қасиеттер туралы негізгі фактілерден басқа. Машвистор статистикалық анықтама алгоритмдерін қолдана отырып, біреуді Airbnb немесе дәстүрлі жалға алу кезінде жылжымайтын мүлікке жаман инвестиция салуға жол бермейтін мәліметтер бере алады.

API екі негізгі категорияға ие:

  • Қысқа мерзімді жалға беру (Airbnb) немесе демалыстың ақысы
  • Ұзақ мерзімді жалдау («дәстүрлі»)

API айына нақты Airbnb қасиеттері туралы толық ақпарат бере алады, соның ішінде;

Соңғы нүктелер жылжымайтын мүлік, жалдау ақысы, тенденциялар, болжамды ұпайлар сияқты санаттарға бөлінеді. Кейбіреулер нарықтағы жалпы үрдістерді немесе белгілі бір Airbnb мүлкіне нөлдік кіруді іздей алады. Неліктен Airbnb API-ін нақты мүлік тізімдерін алу үшін қолданбайтынымызды білгіңіз келуі мүмкін, өйткені біз іздейміз.

Неліктен Airbnb API интерфейсін қолданбайсыз?

«Қазіргі уақытта біз API-ге кіру туралы жаңа сұраныстарды қабылдамаймыз. Біздің серіктес менеджерлердің жаһандық тобы сіздің бизнесіңізді ұсыну мүмкіндігі, технологияңыздың беріктігі және ортақ тұтынушыларды қолдау мүмкіндігі негізінде болашақ серіктестермен байланыс орнатады. » Airbnb веб-сайты

Егер біз қолданушыларға әрекеттерді орындауға мүмкіндік беретін қосымшаны жасасақ (яғни тізімдерді жаңарту), онда біз Airbnb API-ге тікелей қол жеткізгісі келеді. Бұл қатынас, мүмкін, Airbnb-тен басқа үшінші тарап арқылы жүзеге асады.

Жобаны жасамас бұрын, сіз жауап бергіңіз келетін сұрақтар үшін қандай деректер түрін қажет екенін білу пайдалы болар еді. Mashvisor API-ден алатын ақпарат:

  • Потенциалды Airbnb хосттарына олардың аймағында тізімге алу туралы дұрыс немесе жаман шешім қабылдағаны туралы хабарлаңыз
  • Саяхатшыларға Airbnb немесе басқа провайдерлерді пайдалану тиімді ме, соны анықтауға көмектесіңіз

Mashvisor негізінен аналитикалық және ақпараттық болып табылады және пайдаланушылар үшін олардың есебіндегі әрекеттерді жасамайды.

Осы API-нің көптеген нұсқалары бар, бірақ алдымен оны қалай пайдалану керектігін талқыламақпын. Содан кейін біз өзімізге (немесе біздің пайдаланушыларымызға) жылжымайтын мүлік туралы деректерге негізделген шешімдер қабылдауға көмектескіміз келетін статистиканы алуға болады.

Airbnb деректерін алу үшін Mashvisor API-н қалай пайдалану керек

Бізге RapidAPI-мен есептік жазба және Mashvisor API пайдалану үшін жазба қажет болады (мұнда API құжаттамасын қараңыз).

Айына бір жүзге API қоңырауларын беретін негізгі жазылымды таңдаңыз. Бірінші жүзден кейін бір сұраныс үшін $ 0.10 тұрады. Есіңізде болсын, біз әрдайым RapidAPI әзірлеушінің бақылау тақтасында өзіміздің пайдалануды көре және басқара аламыз. Квотаңызды кейінірек мысалға жақындатпауыңыз керек, бірақ егер сіз өзіңізді жақындағандай сезінетін болсаңыз, бақылау тақтасын дайындаңыз.

Айына жүзден біреуімен біз деректерді қалай жинайтынымызды және бір уақытта қанша дерек жинайтынымыз туралы ақылды болуымыз керек. Біз API туралы пайдалы ақпаратты табамыз. RapidAPI-де «Машвисторды» іздеңіз және оны жібергеннен кейін таңдаңыз.

Сол жақ бөлімде біз жасай алатын HTTP сұраулары берілген. Егер біз сұрау түрін таңдасақ, онда ортаңғы бөлім бізге сұраныс үшін қосымша және қажетті параметрлерді көрсетеді.

Ортаңғы бөліктің жоғарғы жағында әр соңғы нүкте үшін қысқаша сипаттама пайда болады.

Ортаңғы бөлімдердің параметрлері іс жүзінде енгізілімдер болып табылады, егер біз оларды енгізсек, оң жақтағы код үзінділері де өзгереді! Дәл сол бөлімде үлгілердің жауаптары бар, сондықтан біз қандай деректерді соңғы нүктеден алатынымызды бағалай аламыз.

Оң жақ бөлігінің жоғарғы жағында біз сол тілде әртүрлі тілдерді және әртүрлі кітапханаларды таңдай алатын ашылмалы мәзір бар. Кодтық үзінділер тілге тән бояуларға байланысты ерекшеленеді. Біз бұл үзінді құрастырушыны NodeJS пәрмен жолындағы қосымшамыз үшін қолданамыз.

«Қысқа мерзімді жалдау» қай жерде көрсеңіз де, бұл көбінесе Airbnb дегенді білдіреді.

Mashvisor-де өздерінің алгоритмдерімен жасайтын кейбір болжамды ұпайлары бар;

  • Машметкер
  • Меншікті ұсыну
  • Инвестиция ықтималдығы

Солардың ішінде біз тек Машметерді келесі мысалда қолдана аламыз:

Бірегей Машвизор көрші аймақтың инвестициялық мүмкіндігінің пайыздық бағасын көрсететін ұпай әзірледі.

Осы ұпайлардың кез келгені туралы Mashvisor API бақылау тақтасының парағынан білуге ​​болады.

Сізге NodeJS командалық жол қосымшасын құруға қуаныштымыз деп үміттенемін, бұл біздің жергілікті көршімізге негізделген жеке инвестициялық есептерді жасауға мүмкіндік береді!

Қолданба мысалы: Мен әдеттегідей жалға алуым керек пе немесе Airbnb тізіміне кіруім керек пе?

Mashvisor пайдалы аналитикалық ақпаратты ұсынады, сондықтан біз NodeJS көмегімен командалық жол интерфейсін құрамыз, ол сұраққа жауап беру үшін статистика жинайтын болады: «Мен тұратын ауданға сүйене отырып, мен Airbnb-пен қысқа мерзімді жалға алуым керек пе? » . Бағдарлама тек екі соңғы нүктеге ғана әсер етеді, бірақ есептердің бірнеше түрін шығару үшін оларды кеңейтуге болады.

Ол Yargs, Axios және Chalk сияқты танымал npm кітапханаларын пайдаланады. Ол NodeJS құралдарын қирату, асинк / күту, блоктарды сынап көру / ұстап алу және жол әріптері сияқты құралдарды қолданады.

Мен сізді одан да үлкенірек және жақсы нәрсені жасауға шабыттандырады деп сенемін, сондықтан бастайық!

Пререквизиттер

  • Сіз пәрмен жолының құралын қалай ашуға және қолдануға болатындығын білуіңіз керек.
  • NodeJS немесе JavaScript туралы негізгі түсінік
  • Сізге түйіннің жаңа нұсқаларының біреуі керек болады. Мен 10.16 және npm жақында орнатылған нұсқасын қолданамын. Мен 6.13.0 қолданамын, бірақ кем дегенде 5.6 болған жақсы.
  • Интернет байланысы.
  • Мен MacOS жүйесінде UNIX бас командасының жолын қолданамын. Алайда, бұл пәрмен жолын Windows 10-де орнатуға болады.
  • RapidAPI есептік жазбасы және Mashvisor API-ге негізгі (ақысыз) жазылым.

Жобаны орнату

  1. Жаңа терминалды ашыңыз (Командалық-Бос орын, содан кейін Mac-та 'терминалды' іздеңіз).
  2. Cd пәрменін қолдану арқылы мағынасы бар каталогқа өтіңіз. Ағымдағы каталогтың астында қандай каталогтар бар екенін көру үшін cd енгізіп, Tab түймесін екі рет басыңыз. Каталог параметрлері көрсетіледі. Енді мына форматқа сәйкес командаларды іске қосуға болады -> cd low_directory / directory_below_that_that.
  3. Mkdir [name_of_directory] пәрменімен жаңа каталог жасаңыз
  4. CD-ге сол каталогқа енгізіңіз. Сіз өзіңіздің қажетті жерде екендігіңізді pwd бағдарламасын іске қосып тексере аласыз. Бұл Баспа жұмыс каталогын білдіреді.
  5. Npm init -y іске қосу арқылы жаңа npm модулін бастаңыз. Егер пәрмен -y жоқ іске қосылған болса, жаңа npm модулінің аспектілерін сипаттап, анықтап беруді сұрайтын сұрақтар пайда болады. Бұл оқу құралы үшін қажет емес және -y жалаушасымен пәрменді орындау бұл процесті өткізіп жібереді. Осы терминалды ашық күйде ұстаңыз, өйткені кейін npm бумаларын орнатып, түбірлік жоба каталогынан пәрмендерді іске қосамыз.
  6. Өзіңіз қалаған код редакторында жоба каталогын ашыңыз. Мен Visual Studio кодын қолданып жатырмын, сондықтан мен қазіргі каталогта VSCode ашатын функцияны орындаймын.

Бізде NodeJS-пен жұмыс істейтін жаңа жоба бар.

Пәрмен жолы аргументтерін түсіну

Бұл жоба Mashvisor API-мен қайтарылған деректер негізінде есептер құрады. Біз сол деректерді сақтау мүмкіндігін қалаймыз. Бұл бізге қосу, қарау, тізімдеу және жою пәрмендерін қажет етеді. Біз мұны жобада Yargs кітапханасын қолданғымыз келеді, бірақ алдымен командалармен аргументтерді қалай өткізетініміз туралы біраз түсіну қажет.

  1. Жоба каталогында cli.js атты файл жасаңыз.
  2. Console.log кодын салыңыз (process.argv)
  3. Терминалға келесі пәрменді енгізіңіз: «test» торабы cli.js. Онда бірнеше элементтер көрсетілген тізім болуы керек. Сол элементтердің бірі «тест» болуы керек. Біз іске қосқан команда NodeJS көмегімен cli.js файлын орындайды және біз берген дәлелді файлға кіре алатын массивте сақтайды. Міне, осылайша біз өз жобамызға деректерді жібереміз.

Дегенмен, бұл айнымалыға қол жетімді емес болуы мүмкін. Бұл процесс сияқты көрінетін еді.argv [2]. Бақытымызға орай, npm кітапхана бар, бұл дәлелдерді объектімен байланыстырады және бізге осы дәлелдерге негізделген командаларды құруға мүмкіндік береді: Yargs.

4. Терминалға қайта оралып, ngm пәрменімен Yargs орнатыңыз - yargs - save.

5. cli.js-те жаңа модульді импорттап, жаңа нысанды талдау керек. Осы файлға төмендегі кодты қосыңыз.

6. cli.js --argument = «тест» түйінін енгізіңіз. Сіз бірінші дәлелді тіркеуді және 'дәлел' және 'сынақ' мәні бар жаңа нысанды көресіз.

Біздің командаларды құру

  1. Біздің жобамыздың түбірінде жаңа каталог жасаңыз, cmds.
  2. Аталған report_cmds ішінде басқа каталог жасаңыз.
  3. Report_cmds ішінде add.js файлын жасаңыз.

Біз барлық командаларымызды бір файлға орналастыра аламыз, бірақ ол шатасуы мүмкін. Оның орнына, біз әр команданың жеке файлы бар бағдарламаны жасаймыз.

4. Add.js. келесі элементтерді қосыңыз.

export.command = 'қосу' // команданың аты export.desc = 'Жаңа есеп қосады' // export.builder = {} // дәлелдерін құру және сипаттау export.handler = функциясы (argv) {console.log («Жаңа есеп қосады») // команда шақырылған кезде іске қосылатын функция}

Бұл файлда біз «қосу» командасының қасиеттерін экспорттаймыз.

  • команда: команданың синтаксисі
  • төменде: команданың не істейтінін сипаттау
  • құрастырушы: Біздің команда қабылдайтын дәлелдерді сипаттаңыз
  • өңдегіш: команда берілген кезде іске қосылатын функция.

Егер біз «Cl.js» түйіні сияқты пәрменді іске қоссақ, бұл іске қосылады деп күтеміз. Бұл жұмыс істемейді, бірақ Yargs біздің командалық анықтамалықты білмейді. Біз оны табу үшін бірнеше өзгерістер енгізуіміз керек.

5. cli.js ішінде бізде бар барлық кодты төмендегі кодпен ауыстырыңыз;

request ('yargs') .commandDir ('cmds') // .demandCommand () .help () // пәрмен каталогын табады .argv // пәрменін қолдануға мүмкіндік береді.

Бұл сізге шатасуы мүмкін, бірақ біз күрделі командаларды құруға мүмкіндік беретін командалық модуль құрып жатырмыз. Егер сіз осы код құрылымына көбірек мән бергіңіз келсе, яргс құжаттамасынан алынады.

6. cmd / каталогта есептер.js деп аталатын файл жасаңыз. Бұл файл клип.js сияқты көрінеді.

// есептер.js
export.command = 'есептері 'export.desc =' Есептерді басқару 'export.builder = function (yargs) {return yargs.commandDir (' report_cmds ') // есеп командаларын табу} export.handler = function (argv) {}

Сіз бұл файлдағы команданың басқаша болатындығын байқайсыз. Синтаксис бұл дәлел міндетті екенін жеткізетін толтырғыш. Егер команда қосымша болуы керек болса, ол [] -қа оралған болар еді.

7. Терминалда, әлі де, біздің каталогтың түпнұсқасында, cl.js анықтамасының түйінін шығарыңыз

Пәрмендер: cli.js есептері Есептерді басқару
Нұсқа нөмірін көрсету [boolean] - көмек Анықтама көрсету [boolean]

Сіз біздің команданың сипаттамасын (report.js бастап) және басқа опцияларды көруіңіз керек. Әрекетті қайталап көріңіз, бірақ бұл жолы көмек анықтамалары cl.js түйінін енгізіңіз.

Сіз біздің қосу командасын оның сипаттамасымен көресіз.

Пәрмендер: cli.js есептері Жаңа есеп қосады

8. add.js ішіне оралу үшін біз API қоңырауына параметрлер ретінде өтетін дәлелдерді орнатуымыз керек. Пәрмен келесідей болады:

Бұл қосу командасы үш қажетті аргументті алады дегенді білдіреді. Export.builder нысаны дәлелді сипаттау, оны қажет немесе қажет емес етіп белгілеу және дәлел түрін (жол, сан және т.б.) толтыру үшін қолданылады.

// add.js
... export.builder = {атау: {сипаттама: 'Есім атауы.', demandOption: шын, // оны қажетті түрге айналдырады: 'string' // нысанды анықтау}, ... ...

9. add.js қосу үшін төмендегі кодты қосыңыз

export.command = 'қосу 'export.desc =' Жаңа есеп қосу 'export.builder = {атауы: {сипаттама:' Есеп атауы. ', demandOption: true, type:' string '}, орналасқан жері: {сипаттама:' Мәліметтерді жинау үшін көршінің идентификаторы. for. ', requestOption: true, type:' number '}, state: {сипаттама:'. үшін деректерді жинау күйі ', requestOption: true, type:' string '},} export.handler = function (argv) { console.log ('Есепті қосады')}

Бұл біздің алғашқы нақты бұйрық. Үш дәлел қажет. Оның шақырылған кезде іске қосылатын функциясы жоқ, бірақ ол жақында болады.

10. «Clock.js» түйінін іске қосыңыз және біздің қосу командамызды дәлелдермен және дескрипторлармен көріңіз. Сонымен қатар, сіз есептерді қосу түйінін іске қосуға болады, ол сәтсіз болады, бірақ командаға қажет дәлелдердің сипаттамалары мен түрлерін көрсетеді.

11. Тізім, қарау және жою командаларының файлдары өте ұқсас. Уақыт үшін әр файлды report_cmds / директориясында жасаңыз (list.js, remove.js, view.js) және сол файлдарға сәйкес кодты қосыңыз.

// list.js
export.command = 'тізім' export.desc = 'Барлық есептерді тізімдеу' export.handler = () => {console.log ('Есептердің барлық тақырыптарының тізімін беру')}
Толық кодты https://rapidapi.com/blog/mashvisor-api-airbnb-data/ сайтынан қараңыз

Функцияның негізгі өңдеушілерін құру

Әр командада өңдегіш бар. Бұл команда шығарылған кезде шақырылатын функция. Біз бұл функцияларды жасауымыз керек, бірақ біз оны бөлек файлда жасаймыз.

  1. Жобаның түбірлік каталогында report.js файлын құрыңыз.
  2. Бұл файлда біздің командаларға арналған функциялар болады. Бұл функцияларды файлдан экспорттау керек.
const listReports = () => {// есептердің тақырыптарын тізімдейді}
const addReport = async (атауы, mahallaId) => {// есеп қосады}
const viewReport = (атауы) => {// есеп мәліметтерін басып шығарады}
const removeReport = (аты) => {// есепті есептерден жояды.json}
module.exports = {addReport, removeReport, listReports, viewReport,}

Біздің есеп деректеріміз тізімде жергілікті файлда сақталады. Бұл жерде біз есеп деректерін оқимыз, сақтаймыз, жүктейміз және жоямыз.

3. Каталогтың түбіне есептер.json файлын жасаңыз және оған [{«name»: «test», «location»: 54678}] мысал нысаны бар тізім қойыңыз.

Біз сізге есептерді жүктейтін екі көмекші функцияны қажет етеміз, ал есептерді сол файлға сақтайтын функция қажет болады. Біз мұны NodeJS қондырылған fs модулімен жасаймыз. Біз бұны report.js жоғарғы жағында талап етуіміз керек.

4. Осы кодты report.js жоғарғы жағына қосыңыз.

const fs = талап ету ('fs')
const loadReports = () => {байқап көріңіз {есептерді жіберуге рұқсат беріңіз = fs.readFileSync ('./ report.json'); // файлды табу және жүктеу есептерJson = reportBuffer.toString (); // буферді жолды қайтаруға JSON.parse түрлендіреді (reportJson); // жолға объектіні талдау} catch (e) {return []; }}
const saveReports = (есептер) => {const dataJson = JSON.stringify (есептер); fs.writeFileSync ('report.json', dataJson); } ...

5. Енді біз тізім функциясын жасай аламыз. Бұл есептерді шығаратын, содан кейін консольге есеп тақырыптарын басып шығаратын қарапайым функция. Біз оны Бор кітапханасымен бірге дәмдегіміз келеді. Бор кітапханасын npm - бормен орнату арқылы орнатыңыз

Бор консоль шығысына бояуды қосады. Бор туралы көбірек білуге ​​болады, оның npm парағында.

6. Report.js тізіміндегі функцияны аяқтап, файлдың жоғарғы жағына борды импорттаңыз

const бор = талап ету ('бор') ... const listReports = () => {const есептері = loadReports (); report.map ((report, i) => {console.warn (chalk.white.bgBlue (`$ {report.name}`));})} ...

Біз бірінші пәрменді тексеруге дайынбыз, бірақ бұл функцияны list.js командалық файлына қосқан жоқпыз.

7. list.js ішіне console.log ('Барлық есептердің тақырыптарын тізімдеу') report.listReports () файлымен және файлдың жоғарғы жағымен ауыстырыңыз;

const есептер = талап ('../../ есептер');

8. есептер тізімін cli.js іске қосыңыз. Сіз біздің біреуіміздің атын көресіз, тек консольге көгілдір фонмен басып шығаруға болады.

Әрі қарай, жою командасын тез қарастырайық. Бұл функция атауды алады (есеп атауы), содан кейін оны есептер тізімінен алып тастайды report.json. Ол оны сүзгілегеннен кейін қалған есептермен бірге файлға сақтамай, оны жояды.

9. Бұл кодты report.js файлында жою функциясына қосыңыз

... const removeReport = (name) => {try {const есептер = loadReports (); // есептерді жүктеу newReports = report.filter (report => report.name! == name); // аты сәйкес келмейтін есептерді алу үшін сүзгі, егер (есептер.length> newReports.length) {saveReports (newReports); // жаңа есептер тізімін console.log файлына сақтау (chalk.green.inverse ('Есеп жойылды!'))} else {console.log (chalk.red.inverse ('Есеп табылмады')); }} ұстап алу (e) {қайтару e}} ...

10. console.log (...) орнына remove.js функциясын қосыңыз және есептер нысанын импорттаңыз.

// remove.js
const есептер = талап ету ('../../ есептер') ... ... export.handler = функциясы (аргв) {report.removeReport (argv.name)}

Біз ат аргументін функцияға argv объектісі арқылы жіберетінімізге назар аударыңыз. Нысанның ішінде командалық жолдан өткен мәнді сақтайтын «name» қасиеті болады.

Airvisnb және дәстүрлі жылжымайтын мүлік туралы деректерді Mashvisor API-ден шығаратын қосу командасын құру уақыты келді.

Машвистордан деректерді алу (Airbnb API интеграциясы)

Қосу командасы;

  • Машвистордан деректерді алыңыз
  • Біз сақтағыңыз келетін деректерді таңдаңыз
  • Бұл деректерді report.json сайтына сақтаңыз

Біз HTTP қоңырауларымызды Axios-пен бірге бөлек файлға саламыз. Жоба каталогының түбірінде тұрғандығыңызға көз жеткізіңіз.

2. Жобаның түбінде api.js файлын құрыңыз. Бұл файлға импульстарды импорттаңыз және файл келесідей болуы үшін келесі кодты қосыңыз:

const axios = қажеттілік ('axios')
const instance = axios.create ({тайм-аут: 1000, үстіңгі деректемелер: {// осында қосылған тақырыптар барлық 'инстанцияларға // төменде modul.exports}} қолданылады);
module.exports = {util: {// біз API қоңырауларымызды осында қосамыз, getNeighborhoodOverview: (қала, мемлекет) => данасы ({})}, airbnb: {// airbnb api осында қоңырау шалады}, дәстүрлі: {/ / дәстүрлі api қоңыраулары мына жерде}}
бүкіл кодты https://rapidapi.com/blog/mashvisor-api-airbnb-data/ сілтемесінен қараңыз

Біз барлық API қоңырауларымызды бір файлда жасай аламыз және оларды әртүрлі нысандарға бекітілген функциялар ретінде экспорттай аламыз. Назар аударыңыз, біз «getNeighborhoodOverview» деп аталатын утилиталық объектте функция жасаймыз және оны «mahallId» және «state» командалық жолының екі аргументтеріне береміз.

Бұл біздің кодты реттеуге көмектеседі және бізге әр сұраныс үшін қажет тақырыптарды сақтайтын Axios данасын оңай құруға мүмкіндік береді.

Өкінішке орай, мен Axios кітапханасы мен даналары туралы егжей-тегжейлі айта алмаймын, бірақ сіз бұл туралы мына жерден оқи аласыз.

3. Шолғышта Mashvisor API-ге өтіңіз, сол жақтағы «Іздеу» қойындысының астындағы «Көршіні шолу» тармағын таңдаңыз.

4. Сол беттің оң жақ панелінде ашылмалы кодты таңдап, 'Node.js' табыңыз. «Axios» тізімделген басқа бүйірлік тақта болуы керек. Оны тауып, 'Axios' таңдаңыз.

HTTP тақырыптары жоғарғы жағында Axios данасына орналастырылады. Әдіс, url және парамтерлер функционалды қоңырау ішінде жүреді. Үзінді кодынан тиісті деректерді алғаннан кейін, api.js файлында осы код болуы керек.

const axios = қажеттілік ('axios') 
бүкіл кодты https://rapidapi.com/blog/mashvisor-api-airbnb-data/ сілтемесінен қараңыз

Ағымдағы URL-ге қатысты мәселе - бұл динамикалық емес. Бізге тікелей жолға жіберілетін командалық жолдағы айнымалылар қажет.

5. URL мекен-жайының екі ұшындағы әр тырнақшаны «» белгісімен ауыстырыңыз. Бұл жолды түзеді және $ {variableName} синтаксисімен жолға айнымалыларды енгізуге мүмкіндік береді.

6. URL мекен-жайындағы mahalliId параметрін $ {courtId} және күй параметрінің мәнін күй айнымалысымен алмастырыңыз, сонда біздің API қоңырауы келесідей болады:

... «әдіс»: «GET», «url»: `https: //mashvisor-api.p.rapidapi.com/neighborhood/$ {mahalliId} / bar`,« params »: {« state »: мемлекет } ...

Алғашқы API қоңырау орнатылғаннан кейін, біз бұл функцияны report.js ішіне импорттап, addReport функциясы ішінде шақыруымыз керек.

7. {util} -ді report.js-ке импорттаңыз және оны синхронды түрде функцияға шақырыңыз.

... const {util} = талап ету ('./ api') ...
... const addReport = async (атауы, mahallaId, мемлекет) => {байқап көріңіз {// {деректер: [аты]} жауап объектісінен дерек нысанын шығарады және оның атын өзгертеді. // Көршіні шолу const үшін деректер алыңыз {data: overviewData} = util.getNeighborhoodOverview (көрші аудан, мемлекет) күтіңіз
// Нысан тереңдігін анықтауға көмектесу const courtOverview = overviewData.content;
} catch (e) {console.log (e) return console.log (chalk.red.inverse ('Деректер есебін алу қатесі'))}} ...

Мен осы кодты толықтыруға тағы бірнеше нәрсені сіңірдім. Біз Axios жауабын объектінің «деректер» қасиетін алып тастап, оны «overviewData» деп өзгерту арқылы бұзамыз.

Содан кейін, біз көрнекі жауап беру құрылымына жақындаймызOverview айнымалысы, өйткені мазмұн сәл төмен. Біз мұны RapidAPI бақылау тақтасындағы мысалдардың жауаптарына қарап білеміз.

Бұл функцияда жетіспейтін төрт нәрсе бар:

  1. Есептерді жүктеу
  2. Көшірме атауын тексеру
  3. Жауап беру объектісінен деректерді таңдау
  4. Есептерді сақтау

8. addReport () функциясының жоғарғы жағындағы loadReports () қызметіне қоңырау шалып, нәтижені ауыспалы есептерге сақтаңыз.

9. Javascript find () функциясын есептерді қайталау және қайталанатын атауды іздеу үшін қолданыңыз.

10. Егер көшірме болмаса, API шақырыңыз, егер бар болса, мұны түсіндіретін хабарламаны тіркеңіз. Осы толықтырулардан кейін функцияның коды болады;

... const addReport = async (атауы, маңыId, күй) => {const есептері = loadReports (); const duplicateReport = report.find (report => report.name === name);
егер (! duplicateReport) {көріңіз {// {деректер: [аты]} деректер нысанын жауаптан шығарады және оны қайта атайды // Көршіні шолу үшін мәлімет алу {деректер: overviewData} = күтіңіз util.getNeighborhoodOverview (mahallaId, state) / / Анықтама нысанды тереңдікке бағыттау const courtOverview = overviewData.content;
} catch (e) {console.log (e) return console.log (chalk.red.inverse ('Деректер есептерін шығарудағы қате'))}} else {console.log (chalk.red.inverse ('Есеп бұрыннан бар') ))}} ...

Есеп деректерін сақтау өте оңай болады. Оны тек есептер айнымалысына итеріп, содан кейін saveReports () функциясын шақыру керек. Бұған дейін біз жауаптан өзіміз қалаған деректерді нақты талдауымыз керек.

11. Біздің каталогтың түбінде кәдеге жарату қалтасын жасаңыз және cleanData.js файлын қосыңыз.

Мен бұл барлық файлдар мен қалталарды жасауға қиындық тудыратын сияқты көрінетінін білемін, бірақ егер біз үлкенірек және қызықты қосымшаларды құрамыз деп үміттенсек, біздің жобаны ұйымдастыруға назар аудару керек. Біз шатасқымыз келмейді.

Бұл функция кішігірім жауап нысанын қабылдайды, мәндерді жаңа қасиеттерге тағайындайды, содан кейін нысанды қайтарады. Мен қазірдің өзінде RapidAPI бақылау тақтасындағы жауап нысанын қарап шықтым және пайдаланылатын объекттен Airbnb және жылжымайтын мүліктің дәстүрлі деректерін таңдадым.

Бұл көптеген кодтар сияқты көрінуі мүмкін, бірақ олардың көпшілігі жай ғана ауыспалы және нысанды тағайындау болып табылады.

12. Төмендегі кодты cleanData.js-ке қосыңыз.

const cleanData = асинк (атауы, маңдайId) => {
// жауап объектісінен деректерді алып, жаңа айнымалы мәндерге тағайындаңыз const airbnb_properties = courtOverview.num_of_airbnb_properties; const дәстүрлі_properties = mahallaOverview.num_of_traditional_properties; const mash_meter = mahallaOverview.mashMeter; const avg_occupancy = көршілесOverview.avg_occupancy; const roi_airbnb = көршілесOverview.airbnb_rental.roi; const roi_traditional = көршілікOverview.traditional_rental.roi; const cap_rate_airbnb = mahallaOverview.airbnb_rental.cap_rate; const cap_rate_traditional = маңдайша шолу.traditional_rental.cap_rate; const rent_income_airbnb = көршілікOverview.airbnb_rental.rental_income; const rent_income_traditional = mahallaOverview.traditional_rental.rental_income;
// Қайтарылатын және есептерге қосылатын нысанды жасаңыз, қалғанын https://rapidapi.com/blog/mashvisor-api-airbnb-data/ ішінен көріңіз.

Бізде Airbnb туралы және ондағы көрші ауданда жалға алудың дәстүрлі қасиеттері туралы он пайдалы мәліметтер бар объект бар.

13. Нысанды addReport () функциясына қайта алыңыз және оны біздің есептер.json файлына сақтаңыз. Сондай-ақ, cleanData () функциясын импорттағанымызды тексеруіміз керек. Енді файл мен функция ұқсас болуы керек;

... const cleanData = талабы ('./ util / cleanData')
... const addReport = async (атауы, mahallaId) => {const есептері = loadReports (); const duplicateReport = report.find (report => report.name === name);
Қалғанын https://rapidapi.com/blog/mashvisor-api-airbnb-data/ сайтынан қараңыз

Біз командалық жолды қолданғанымызға біраз уақыт болды, бірақ біздің пәрмендеріміз бұл функцияға жететініне көз жеткізу үшін қосу пәрменін тексеретін уақыт жетті.

Егер біз командалық жол арқылы аты, орналасқан жері мен күйі туралы дәлелдерді бергіміз келсе, ол сәтсіз болады. AddReport (argv.name, argv.location, argv.state) функциясы қосу командасының өңдеушісіне қосылмаған.

14. addReport функциясын импорттаңыз және оны add.js деп атаңыз. Аргв объектісінен алынған үш аргументті міндетті түрде қосыңыз.

Енді файлдың коды болады:

const есептер = талап ('../../ есептер');
export.command = 'қосу 'export.desc =' Жаңа есеп қосу 'export.builder = {атауы: {сипаттама:' Есеп атауы. ', demandOption: true, type:' string '}, орналасқан жері: {сипаттама:' Мәліметтерді жинау үшін көршінің идентификаторы. for. ', requestOption: true, type:' number '}, state: {сипаттама:'. үшін деректерді жинау күйі ', requestOption: true, type:' string '},} export.handler = function (argv) { есептер.addReport (argv.name, argv.location, argv.state)}

Аргументтер addReport () функциясына еніп жатқандығын тексерейік.

15. Функциядағы API қоңырауына түсініктеме беріңіз және қосыңыз:

console.log (атауы, төңірегіI, мемлекет)

Түсініктеме берілген кодтың үстінде. Қате жіберілмес бұрын ол дәлелдерді тіркеуі керек.

16. «Cl.Js» түйінін іске қосу 45624 «WA» тестін қосады

// консоль шығысы ... test 45624 WA // біз енгізген дәлелдер! ReferenceError: overviewData анықталмаған // стектің қалған бөлігі ...

Керемет! Біздің аргументтеріміз функцияға жол ашуда және оны API-де Машвизорға қоңырау шалу кезінде пайдалануға болады.

17. Кодты толтырмаңыз және консоль журналын жойыңыз. Біздің алғашқы нақты есебімізді қосу үшін келесі пәрменді іске қосыңыз:

Cl.js түйіндері есептеріне «бірінші есеп» 271841 «WA» қосылады

Report.json ішін тексеріңіз, сіз біздің мысалдағы деректерді және алғашқы есеп деректерін көресіз!

Тағы екі нәрсе қалуы керек.

  1. ViewReport (name) функциясын аяқтаңыз, осылайша біз бұл деректерді жақсы көрсете аламыз.
  2. Біздің орналасқан жерімізге ең жақын орналасқан пәрменді жазыңыз.

Көру функциясы

Бұл функцияда бізге қажет:

  • Есептерді жүктеңіз (бізде бұл функция бар)
  • Берілген атаудың ішінде болғанын тексеріңіз дәлел дәлел, және;
  • Есептерді басып шығаратын функцияға қоңырау шалыңыз

Қосу функциясында бірдей кодты қолданамыз.

// report.js ... const viewReport = (аты) => {const есептері = loadReports (); let found = report.find ((report) => report.name === name) // егер есеп табылса, деректерді консольге басып шығаратын функцияға қоңырау шалыңыз ... ...

2. Есеп осындай атпен табылса, функцияға қоңырау шалу үшін if / else блогын орнатыңыз. Егер есеп сәйкес келмесе, есеп табылмайтынын тіркеңіз.

// report.js ... const viewReport = (аты) => {const есептері = loadReports (); let found = report.find ((report) => report.name === name) егер (табылса) {printBasicReport (табылды); // әлі жоқ ... тағы {console.log (chalk.red.inverse ('Бұл есеп табылмады.'))}} ...

PrintBasicReport (табылған) функциясы әлі жоқ.

3. Жобаның түбінде print_report деп аталатын жаңа каталог жасаңыз және сол каталог ішінде printBasicReports.js атты файл жасаңыз.

Біз кіші массивті мәндер ретінде құрамыз. Әр массивте екі нәрсе болады.

  1. Біз басып шығаратын деректердің белгісі.
  2. Табылған объектінің тиісті деректері, біз оны жібереміз.

4. Жаңа файлға төмендегі кодты енгізіңіз.

// printBasicReport.js
const printBasicReport = (табылған) => {
const reportLines = [[«Есеп атауы», табылған.намасы], [«Орналасқан жері», табылған Есептегіш «, табылған.mash_метр], [» Орташа. Орналастыру «, табылған.авг_оккупанс], [» ROI - Airbnb «, табылған.roi_airbnb], [» ROI - дәстүрлі «, табылған.roi_ дәстүрлі], [» Сыйақы мөлшерлемесі - Airbnb «, табылған.cap_rate_airbnb], [» Сыйақы мөлшерлемесі - дәстүрлі «, табылған.кап_раты_тұрақты], [» Жалға беру кірісі - Airbnb «, табылған.rental_income_airbnb], [» Жалға беру кірісі - дәстүрлі «, табылған.rental_income_ дәстүрлі],]
// элементтердің үстінен қайталаңыз және оларды консольге шығарыңыз}
module.exports = printBasicReport;

Біз табылған объектінің ішінен заттарды алып тастаймыз және оны жапсырманы оқуға оңайырақ сәйкестендіреміз.

Әрі қарай, процеске Chalk қосыңыз және біздің деректер мен белгілерге console.log () қосыңыз.

5. printBasicReports.js соңғы файлында код болады;

const бор = талап ету ('бор') // импорттау боры
const printBasicReport = (табылған) => {const labelText = chalk.white.bgCyan; // борды қолданып функцияны құрамыз
const reportLines = [[«Есеп атауы», табылған.намасы], [«Орналасқан жері», табылған Есептегіш «, табылған.mash_метр], [» Орташа. Орналастыру «, табылған.авг_оккупанс], [» ROI - Airbnb «, табылған.roi_airbnb], [» ROI - дәстүрлі «, табылған.roi_ дәстүрлі], [» Сыйақы мөлшерлемесі - Airbnb «, табылған.cap_rate_airbnb], [» Сыйақы мөлшерлемесі - дәстүрлі «, табылған.кап_раты_тұрақты], [» Жалға беру кірісі - Airbnb «, табылған.rental_income_airbnb], [» Жалға беру кірісі - дәстүрлі «, табылған.rental_income_ дәстүрлі],]
// кейбір форматтау reportLines.map (жол => {console.log (labelText (жол [0])) + «: \ n \ t» + «----» + жол [1])} қосу арқылы сызықтардың үстінен қайталанады. )}
module.exports = printBasicReport;

6. Report.js сайтына қайта оралып, жаңа функцияны жоғарғы жағына импорттаңыз

// есептер. js ... const printBasicReport = талап ету ('./ print_report / printBasicReport') ...

Бұл команда қолдануға дайын, бірақ view.js функциясын қосу керек

7. view.js функциясын қосыңыз

// view.js const есептері = талап ету ('../../ есептер') // файлға импорттау функциясы export.command = 'көрініс 'export.desc =' Бір есепті қарау 'export.builder = {атауы: {сипаттама: «Көргіңіз келетін есеп атауы.», талабы: опциясы: шын, түрі:' жол '}} export.handler = функциясы (argv) {report.viewReport (argv.name) // қоңырау функциясы және оның атауын argv объектісінен беру}

8. Біздің каталогтың түбінде пәрменді орындаймыз

«бірінші есеп» көрінісі «clip.js» түйіні

Консольдегі шығыс келесідей болуы керек!

Бұл тек бір API қоңырауынан алынған көптеген пайдалы ақпарат. Біз Mash Meter-ді болжалды нұсқаулық ретінде қолдана аламыз немесе ROI мен жалгерлік кірісті Airbnb мен дәстүрлі әдістер арасындағы салыстыру үшін қолданамыз.

Егер сіз ақпаратты кейінірек сақтағыңыз келсе, пәрменді қолдана отырып, жоба нәтижесін басқа файлға қайта бағыттай аласыз;

қию.js көрінісі [name_of_report]> fileName.txt

Бұл файлды жасайды және оларды сол файлдың мазмұны сияқты жазады.

Жақын көршіңізді табыңыз

Мен сізге екі файлды лақтырамын, ол сізге координаттарыңызды енгізуге және сізге жақын орналасқан көршілесId алуға мүмкіндік береді.

Біріншісі - find-closeest.js. Бұл жаңа команда және жаңа файл cmds / директорияға түседі.

const findClosestNeighborhood = талап ету ('../ util / findClosestNeighborhood')
export.command = 'ең жақын табу 'export.desc =' Іргелес аудандардың идентификаторын табады 'export.builder = {лат: {сипаттама:' Ағымдағы орналасқан жердің ені ', demandOption: true, type:' number '}, long: {сипаттама:' Ағымдағы орналасқан жердің ұзындығы ' , requestOption: true, type: 'number'}, қала: {сипаттама: 'Орын орналасқан қала', demandOption: шын, түрі: 'жол'}, мемлекет: {сипаттама: 'Орын орналасқан', requestOption : true, type: 'string'},} export.handler = function (argv) {findClosestNeighborhood (argv.lat, argv.long, argv.city, argv.state)}

Келесі файл осы беттің жоғарғы жағында импортталған файл болды (егер сіз байқасаңыз).

2. util каталогында findClosestNeighborhood.js файлын құрыңыз және кодты қосыңыз:

const {util} = request ('../ api') const бор = талап ету ('бор')
бүкіл кодты https://rapidapi.com/blog/mashvisor-api-airbnb-data/ сілтемесінен қараңыз

Бұл файл сіздің координаттарыңызды алады, Mashvisor-дегі «Көршілердің тізімі» соңғы нүктесіне сұрау жібереді және сіздің қалаңыздағы көршілердің нысандарының тізімін алады.

Содан кейін берілген координаттарды әр ауданның координаттарымен салыстырады және қайсысы жақын екенін анықтайды. Бұл қашықтықты есептеу функциясы емес, бірақ бұл бізге жеткілікті.

Біз API қоңырауын api.js-тегі util объектісіне қосуымыз керек.

3. алдыңғы API қоңырауымыздың астындағы api.js-ке HTTP сұранысын қосыңыз.

// api.js
... module.exports = {util: {... getNeighborhoodsInArea: (қала, мемлекет) => данасы ({«әдіс»: «GET», «url»: `https: //mashvisor-api.p.rapidapi .com / қала / аудандар / $ {мемлекет} / $ {қала} `,})}, ...}

4. Орныңыздың координаттарын немесе сізді қызықтыратын кез-келген орынды алыңыз. Көмек қажет болса, ендік және бойлық координаттарын алу үшін Google көмекке келеді.

5. Табу-жақын команданы координаттары, қаласы және штатымен орындаңыз.

Мен команданы Сиэттлдегі Капитолий төбесінде орналастыру үшін басқардым.

cl.js-түйіні ең жақын 47.627464 -122.321387 «Сиэттл» «WA»

Ал консольде ең жақын көрші орналасқан.

Ең жақын көрші - 250150 нөмірі бар Бродвей

Мен енді есепті қосу командасын осы жаңа Машвизор маңындағы идентификатормен қайта бастай аламын!

Міне бітті!

Алға жылжу

Бұл қосымша көптеген тақырыптарды қамтыды және бірнеше тақырыптарды өткізіп жіберді. Ол жасаушы модульдік командаларды, есептерді шығара алатын және HTTP сұрау кодын жеңілдететін етіп орнатылған.

API-дан деректерді алудағы күрделілік аспектілердің бірі - деректерді жауап объектісінің тереңдігінен тарту. Бұл тапсырма салық салу болып табылады, әсіресе егер біз 10 немесе 20 API қоңырауларын шалу үшін осы қосымшаны жасасақ.

Егер біз екеуіміз де нысандарға кіру аздап тітіркендіргіш екеніне келісетін болсақ, сіз GraphQL-ді тексеріп алуыңыз керек, өйткені жақында RapidAPI сұрау тілінің осы түріне қолдау қосты.

Алайда, қаласаңыз, қосымшаға HTTP қоңырауларын қосуға болады!

Байланысты ресурстар

  • Үздік геокодтау және орналасу API интерфейстері
  • Best Hotel API интерфейстері
  • Мобильді қосымшаны әзірлеу API
  • Airbnb сияқты қосымшаны қалай құруға болады?

Алғашында https://rapidapi.com сайтында 2020 жылдың 27 қаңтарында жарияланған.