ទំព័រដើម/មគ្គុទេសក៍/អ្នកអភិវឌ្ឍន៍
អ្នកអភិវឌ្ឍន៍

ធ្វើដូចម្តេចដើម្បីស្វែងរកប៉ុស្តិ៍ដឹកជញ្ជូននៅជិតជាមួយ API ?

ស្វែងយល់ពីការស្វែងរកប៉ុស្តិ៍នៅជិតដោយប្រើ API ROOTE៖ សមាមាត្រ, ជ្រុង, ឧទាហរណ៍ JavaScript, ការអានលទ្ធផល និងការគ្រប់គ្រងកំហុស។

By ROOTE·អានប្រហែល 7 នាទី
ធ្វើដូចម្តេចដើម្បីស្វែងរកប៉ុស្តិ៍ដឹកជញ្ជូននៅជិតជាមួយ API ?
គ្រប់ការធ្វើដំណើរចាប់ផ្តើមនៅជិតខ្លួន។

ព័ត៌មានសំខាន់ក្នុងរយៈពេលប៉ុន្មានវិនាទី

ដើម្បីស្វែងរកប៉ុស្តិ៍នៅជុំវិញចំណុចមួយ អ្នកត្រូវផ្តល់សមាមាត្រអក្សរ បណ្ដោយ និងជ្រុង ជាមួយជ្រុងមួយទៅ API ជិតខាង។ បន្ទាប់មកពិនិត្យស្ថានភាពនៃការឆ្លើយតប, ធាតុដែលបានត្រឡប់មក និងព័ត៌មានគ្របដណ្តប់មុនបង្ហាញបញ្ជី ឬផែនទី។

ដើម្បីស្វែងរកប៉ុស្តិ៍នៅជុំវិញចំណុចមួយ អ្នកត្រូវផ្តល់សមាមាត្រអក្សរ បណ្ដោយ និងជ្រុង ជាមួយជ្រុងមួយទៅ API ជិតខាង។ បន្ទាប់មកពិនិត្យស្ថានភាពនៃការឆ្លើយតប, ធាតុដែលបានត្រឡប់មក និងព័ត៌មានគ្របដណ្តប់មុនបង្ហាញបញ្ជី ឬផែនទី។

នៅក្នុងកិច្ចសន្យា ROOTE roote-1.0.0, ផ្លូវ GET /v1/transit/nearby ស្វែងរកកន្លែងដឹកជញ្ជូននៅជិត។ វាមិនទទួលបានការចេញដំណើរឬសារជូនដំណឹងពេលពិតឡើយ។ ការស្វែងរកកន្លែង និងការស្វែងរកដំណើរឆ្លើយតបបន្ទាប់គឺជាដំណើរការផ្សេងគ្នា។

កំណត់ប៉ារ៉ាម៉ែត្រ

សំណើប្រើ lat ទៅសមាមាត្រ និង lng ទៅបណ្តោយ។ អាលីយ៉ាស lon ក៏ត្រូវបានរៀបរាប់នៅក្នុងកិច្ចសន្យា។ ប៉ារ៉ាម៉ែត្រ radius បង្ហាញជ្រុងជាម៉ែត្រ; limit កំណត់ចំនួនលទ្ធផលដែលទាមទារ។ ឧបករណ៍ modes អាចបញ្ជាក់ប្រភេទដឹកជញ្ជូនបាន។

ប៉ារ៉ាម៉ែត្រ ឧទាហរណ៍ អត្ថន័យ
lat 44.8378 សមាមាត្រ នៃចំណុចស្វែងរក
lng -0.5792 បណ្តោយនៃចំណុចស្វែងរក
radius 600 ជ្រុងដែលបានទាមទារជាម៉ែត្រ
limit 10 លំនឹងលទ្ធផលដែលបានទាមទារ
modes bus,tram ប្រភេទដែលកំពុងស្វែងរក

សមាមាត្រទាំងនេះគេប្រើជាឧទាហរណ៍ស្វែងរកនៅ Bordeaux; វាមិនបានបង្ហាញពីប៉ុស្តិ៍ដែលបានធានាទេ។ សូមពិនិត្យមើល កិច្ចសន្យា OpenAPI ROOTE សម្រាប់ដែនកំណត់, កន្លែង និងលក្ខខណ្ឌបច្ចុប្បន្ន។

ចម្លាក់ទៅសកម្មភាព

ស្វែងរកប៉ុស្តិ៍នៅជុំវិញអ្នក។

ស្វែងយល់ពីប៉ុស្តិ៍ដែលបានកត់ត្រាជុំវិញទីក្រុង ឬទីតាំងរបស់អ្នក។ ពិនិត្យព័ត៌មានលម្អិតដើម្បីយល់ពីប្រភេទ និងព័ត៌មានដែលមាន។

ផ្ញើសំណើដំបូងនៅខាងម៉ាស៊ីនបម្រើ

នេះគឺជាឧទាហរណ៍ JavaScript សម្រាប់បរិយាកាស Node.js ដែលមាន fetch។ តោន, បើអ្នកប្រើប្រាស់វា, ត្រូវរក្សាទុកនៅក្នុងអថេរបរិយាកាសនៅផ្នែកម៉ាស៊ីនបម្រើ។ អត្រានេះមិនចាំបាច់ដាក់សម្ងាត់នៅក្នុងកម្មវិធីរកមើលទេ។

async function rechercherArrets(token = process.env.ROOTE_API_TOKEN) {
  const url = new URL('https://api.roote.ai/v1/transit/nearby');
  url.search = new URLSearchParams({
    lat: '44.8378',
    lng: '-0.5792',
    radius: '600',
    limit: '10',
    modes: 'bus,tram'
  }).toString();

  const headers = { Accept: 'application/json' };
  if (token) headers.Authorization = `Bearer ${token}`;

  const response = await fetch(url, {
    headers,
    signal: AbortSignal.timeout(10000)
  });
  if (!response.ok) {
    throw new Error(`Erreur HTTP ${response.status}`);
  }

  const data = await response.json();
  if (data.contract_version !== 'roote-1.0.0') {
    throw new Error('Version du contrat non reconnue');
  }
  if (!['success', 'empty', 'partial'].includes(data.status)) {
    throw new Error('Recherche indisponible');
  }
  if (!Array.isArray(data.stations)) {
    throw new Error('Réponse sans collection stations valide');
  }

  return {
    status: data.status,
    stations: data.stations,
    lines: data.lines,
    operators: data.operators,
    coverage: data.coverage,
    warnings: data.warnings,
    attributions: data.attributions,
    meta: data.meta
  };
}

កិច្ចសន្យាដែលបានពិនិត្យអនុញ្ញាតឲ្យចូលដោយគ្មានអត្តសញ្ញាណ ឬតាមតោន គិតតាមគោលការណ៍ដែលអនុវត្ត។ សូមពិនិត្យសិទ្ធិ និងដែនកំណត់ការចូលរបស់អ្នក។ ការឆ្លើយតប HTTP ត្រឹមត្រូវមិនបានជំនួសការត្រួតពិនិត្យខ្លួនវាឡើយ; នៅក្នុងការផលិត, សូមប្រើការត្រួតពិនិត្យវត្ថុទៅតាម schema ផងដែរ។

អានធាតុ និងសម្ព័ន្ធរបស់ពួកវា

បណ្ដុំនៃស្ថានីយមានកន្លែងដែលបានត្រឡប់មក។ សម្រាប់មួយៗ សូមពិនិត្យអត្តសញ្ញាណ id, ឈ្មោះ name, ប្រភេទ entity_kind, ទីតាំង location និងចម្ងាយ distance_meters។ លេខសំគាល់ line_ids និង operator_ids អនុញ្ញាតឲ្យភ្ជាប់ជាមួយបណ្ដុំ lines និង operators ប្រសិនបើមាន។

បង្ហាញចម្ងាយភូមិសាស្ត្រដូច្នេះហើយ។ មិនត្រូវបំលែងវាជាពេលដំណើរក្នុងការដើរបើគ្មានការគណនាតាមផ្លូវនាំ។ មគ្គុទេសក៏ រកប៉ុស្តិ៍ជិតខាង ឲ្យពិភាក្សាហេតុផលដែលការចូលប្រើអាចបំប្លែងចរាចរណ៍ផ្លូវ។

ក៏ដូចជាការព្យាបាលព័ត៌មានមិនដែលបានដឹងជាក់លាក់ផងដែរ។ នៅក្នុងកិច្ចសន្យា accessibility.wheelchair អាចមាន តម្លៃ unknown : តម្លៃនេះមិនសមនឹង yes ឬ no ទេ។ សមត្ថភាពចេញដំណើរដែលបានផ្សាយមិនមែនជាបញ្ជីចេញដំណើរទេ។

បង្ហាញបញ្ជី ឬផែនទី

ប្រើ id ដើម្បីធានាបានថាធាតុ UI មានស្ថេរភាព, ឈ្មោះសម្រាប់ស្លាក និងទីតាំងសម្រាប់ទីតាំងរបស់ពួកវា។ ភ្ជាប់បន្ទាត់ដោយសារ line_ids ជំនួសការ​ប្រើឈ្មោះទៅជិតគ្នា។

បើអ្នកបង្ហាញពណ៌បន្ទាត់ ឬស្លាកទាំងពីរដែលបានទទួលពីទិន្នន័យ សូមទទួលយកពួកវាជាឯកសារខាងក្រៅដែលត្រូវត្រួតពិនិត្យ។ សម្រាប់ឈ្មោះ សូមប្រើអត្ថបទជាជម្រើស មិនមែន HTML ដែលចាក់ចូល។

រក្សាទុកការចាត់ចែងប្រភព និងបង្ហាញការចាត់ចែងដែលកិច្ចសន្យារបស់អ្នកបានបញ្ជាក់ថាត្រូវបានទាមទារ។

គ្រប់គ្រងលទ្ធផលទទេ, ការឆ្លើយតបផ្នែក និងកំហុស

លទ្ធផល empty បង្ហាញការស្វែងរកមិនមានលទ្ធផលនៅក្នុងដែនដឹង។ វាមិនបញ្ជាក់ពីការខ្វះខាតហេដ្ឋារចនាសម្ព័ន្ធដឹកជញ្ជូនជាក់ស្តែង។ ការឆ្លើយតប partial អាចមានកន្លែងដែលមានប្រយោជន៍ ខណៈពេលបញ្ជាក់ដែនកំណត់៖ បង្ហាញលទ្ធផលនិងការព្រមានដែលសមរម្យ។

អាន coverage, warnings និងដែនកំណត់នៅក្នុង meta។ បញ្ជីដែលត្រូវបានកាត់ខ្លីមិនបានពណ៌នាអំពីការគ្របដណ្តប់ពេញលេញ។ ប្រសិនបើកើតមានកំហុសបណ្ដាញ ឬ HTTP សូមបង្ហាញថាគ្មានស្រាប់ ដោយមិនប្តូរលទ្ធផលជាប៉ុស្តិ៍ទេ។

សម្រាប់កូដ ៤២៩ សូមពិនិត្យនូវការណែនាំពីការបន្ត និងក្បាលតំណរ របស់សេវាកម្ម។ កុំធ្វើការចាប់ផ្តើមឡើងវិញជារង្វង់។

ផ្សំខុសគ្នារវាងស្ថានីយ, តំបន់ និងទំពារ

កន្លែង entity_kind ចែកចាយកម្រិតនៃកន្លែងផ្សេងៗ។ លទ្ធផលពីរដែលនៅជិតគ្នាអាចជាទំពារផ្សេង; ឈ្មោះដែលស្រដៀងគ្នាអាចជាមកពីប្រភពផ្សេងៗ។

កុំបញ្ចូលកន្លែងដោយស្វ័យប្រវត្តិឡើយនៅលើការជិតស្និតគ្នាតែមួយ។ ប្រើសម្ព័ន្ធ និងអត្តសញ្ញាណដែលបានចេញផ្សាយដោយសេវាកម្ម។ មគ្គុទេសក៍របស់យើង GTFS, GTFS-RT និង GBFS ពន្យល់ពីបរិបទនៃទិន្នន័យ។

រៀបចំការរួមបញ្ចូលនៅក្នុងការផលិត

ចាប់ផ្តើមការស្វែងរកនៅពេលទីតាំងឬម៉ាស៊ីនចង្អុលបញ្ជាប្រែប្រួលយ៉ាងមានប្រយោជន៍។ ក្រុមហ៊ុនហៅដំណើរការដូចគ្នា កំណត់ពេលវេលាចាំ និងធ្វើឲ្យគ្រប់គ្រង(cache)សម្របសម្រួលទៅតាមប្រភេទទិន្នន័យ និងលក្ខខណ្ឌសេវាកម្ម។

បញ្ជីនៃកន្លែង និងស្ថិតិពេលពិតមិនមានតម្រូវការត្រជាក់ដូចគ្នា។ សូមផ្ទៀងផ្ទាត់ផ្លូវការដោយប្រើការឆ្លើយតបពេញលេញ, ទទេ, ផ្នែក និងកំហុស មុនពេលបង្ហាញស្វែងរកទៅអ្នកប្រើ។

សម្រាប់អ្នកអភិវឌ្ឍន៍កម្មវិធីក្រុមហ៊ុន ROOTE Mobility API

ចល័តភាពជុំវិញចំណុចមួយ។
ផ្ទាល់ក្នុងកម្មវិធីរបស់អ្នក។

  • ស្វែងរក
    ជុំវិញទីតាំងមួយ
  • ចូលដល់
    ទិន្នន័យចល័តភាព
  • ផ្សំក្នុង
    កម្មវិធីរបស់អ្នក

ផ្លាស់ពីផែនទីទៅទិន្នន័យ៖ ស្វែងរកចល័តភាពនិងសេវាកម្មជិតខាងជាមួយ ROOTE API។

ពង្រីកការស្វែងរកទៅសេវាកម្សាន្តក្នុងទីក្រុង

ចំណត និងសេវាកម្មក្នុងទីក្រុងប្រើផ្លូវផ្សេងៗគ្នា។ ដើម្បីស្វែងរកបង្គន់ជុំវិញចំណុចដូចគ្នា, ទិន្នន័យ GET /v1/services/nearby សូមបញ្ចូល lat និង lon ជាមួយ types=toilets។ កុំផ្ញើ modes=toilets ទៅផ្លូវនេះ៖ វាកម្មនេះសម្រាប់ URL របស់ផែនទី មិនមែនជាការដាក់តម្រុយសេវាកម្មទេ។

ឧទាហរណ៍ JavaScript ខាងក្រោម​បង្កើត URL សម្រាប់សេវាកម្មក្នុងកាំរសំឡេង 600 មែត្រ។ វា​មិនបង្កើតសំណើបានទេ; សូមប្រើការគ្រប់គ្រង HTTP និងកិច្ចសន្យាដដែលដែលបានរៀបរាប់ខាងលើ។ ប្រភេទមាតិកាដែលបានរំពឹងទុកឥឡូវនេះគឺ services មិនមែន stations ទេ។ រក្សា attribute service_type, location, distance_meters និង attribute ដែលមានពិតប្រាកដ។

កិច្ចសន្យា REST បានបរិយាយអំពី toilets, drinking_water, fountain, wifi, parking, charging, aed និង locker។ ប្រភេទដែលបានបង្ហាញដោយ MCP អាចខុសគ្នា។ សម្រាប់ប៉ារ៉ាមែត្រដែលទទួលបាន, កំណត់ និងកំណត់ដែនសម្រាប់ការចូលរបស់អ្នក សូមពិនិត្យវាលចំនុចនៃចំណុចប្រទាក់ដែលបានប្រើ។

អត្ថបទនៃសេវាកម្មមិនធានាថាវាបើកនៅពេលស្វែងរកទេ។ ភាពឈប់សម្រាំងមិនបានអាចមមាញឹកដូចជាសេវាកម្មមិនអាចប្រើបាន; បញ្ជីទទេដែលមានកំហុសមិនបញ្ជាក់ពីការបាត់បង់បង្គន់។ សូមរក្សាទិន្នន័យឲ្យច្បាស់លាស់សម្រាប់គ្រួសារនីមួយៗ ជៀសវាងកាត់ទ្រូងវាទៅមានតែឈ្មោះនិងចំណុចតែមួយ។

សម្រាប់ផែនទីរួម, សហការឡើងវិញលទ្ធផលជាមួយគ្រួសារនិងអត្តសញ្ញាណរបស់ពួកវា។ បង្ហាញកំហុសសេវាកម្មដោយមិនលុបចំណតដែលបានត្រឡប់ពី Transit។ ការស្វែងរកនៅតែមជ្ឈមណ្ឌលលើចំណុចដដែល ប៉ុន្តែស្ថានភាពនិងការគ្រប់គ្រងអាចខុសគ្នា។

const url = new URL('https://api.roote.ai/v1/services/nearby');
url.search = new URLSearchParams({
  lat: '44.8416106', lon: '-0.5810938',
  radius: '600', limit: '10', types: 'toilets'
}).toString();
console.log(url.toString());

វាយតម្លៃការស្វែងរកទទេឬមានកំហុស

បញ្ចូលផែនទីដែលបានតម្រូវផ្ទាល់ក្នុងគេហទំព័រ

បង្កើតជំនួយការជុំវិញការស្វែងរកទាំងនេះ

សំណួរញឹកញាប់

Nearby ផ្តល់ដំណើរការចេញបន្ទាប់មកទេ?

គ្មាននៅក្នុងកិច្ចសន្យាបច្ចុប្បន្ននេះទេ។ ផ្លូវនេះស្វែងរកកន្លែងដឹកជញ្ជូន; ដំណើរចេញទាមទារជម្លោះសមត្ថភាពផ្សេងទៀត។

អាចបង្ហាញបញ្ជីទទេបន្ទាប់ពីកំហុសមួយបានទេ?

បង្ហាញការមិនអាចប្រើបាន។ កំហុសមិនបញ្ជាក់កន្លែងខ្វះ។

អាចដាក់តោន API នៅក្នុងកម្មវិធីរកមើលទេ?

សម្ងាត់ត្រូវរក្សាទុកនៅផ្នែកម៉ាស៊ីនបម្រើ។ ប្រើម៉ូដែលចូលដែលបានរៀបចំសម្រាប់កម្មវិធី និងគណនីរបស់អ្នក។

តើអ្នកកំពុងស្វែងរកអ្វីជុំវិញខ្លួនទេ?

ស្វែងរកតំបន់របស់អ្នកជាមួយ ROOTE ហើយរកព័ត៌មានដែលមានសម្រាប់រៀបចំដំណើររបស់អ្នក។

ស្វែងរកផែនទី ROOTE ↗