1 Gabatarwa

Tare da hawan software-a-matakin-sabisi da tsarin microservice, RESTful APIs sun zama ko'ina a cikin aikace-aikacen zamani. Sabis kamar Slack, Stripe, da AWS suna ba da faffadan APIs tare da ɗaruruwan hanyoyin, suna haifar da manyan ƙalubale ga masu haɓakawa don nemo madaidaicin haɗin hanyoyin don ayyukansu.

APIphany tana magance wannan ƙalubalen ta hanyar haɗin tushen sassa wanda aka ƙera musamman don RESTful APIs. Tsarin yana amfani da madaidaicin nau'ikan ma'ana don ƙayyade niyyar mai amfani da kuma jagorantar tsarin bincike, yana ba da damar haɗa shirye-shirye ta atomatik daga cikakkun ƙayyadaddun bayanai.

2 Baya & Ayyukan Da suka Danganci

2.1 Haɗin Tushen Sassa

Haɗin shirye-shirye na tushen sassa an yi amfani da shi cikin nasara don kewaya APIs a cikin harsuna kamar Java, Scala, da Haskell. Waɗannan na'urorin haɗawa suna ɗaukar sa hannun nau'i da misalan shiga-fita don samar da guntun shirye-shirye waɗanda suka haɗa kiran API tare da halin da ake so.

2.2 Ƙalubalen RESTful API

Manyan ƙalubale guda uku suna dagula amfani da haɗin tushen sassa zuwa RESTful APIs: (1) rashin cikakkun nau'ikan ma'ana a cikin ƙayyadaddun API, (2) buƙatar sarrafa bayanai masu tsari-rabu, da (3) damuwa game da aminci tare da aiwatar da kiran API yayin haɗawa.

3 Tsarin APIphany

3.1 Ƙididdiga Nau'in Ma'ana

APIphany ta gabatar da algorithm na ƙididdiga nau'in da ke haɓaka ƙayyadaddun REST tare da nau'ikan ma'ana. Wannan yana ba da damar ƙayyadaddun ƙayyadaddun niyyar mai amfani da kuma jagorantar tsarin haɗawa yadda ya kamata.

3.2 Haɗin Sarrafa Bayanai

Tsarin ya haɗa da ingantattun dabarun haɗawa don sarrafa bayanai masu tsari-rabu waɗanda aka saba ci karo da su lokacin aiki da RESTful APIs, gami da abubuwan JSON da jerin gwano.

3.3 Aiwatarwa Na Kama-Da-Wane

APIphany tana amfani da aiwatarwa na kama-da-wane don guje wa aiwatar da ainihin kiran API yayin haɗawa, tana magance damuwa game da aminci da aiki yayin da ake kiyaye daidaiton haɗawa.

4 Aiwatar da Fasaha

4.1 Tsarin Tsarin Nau'i

Tsarin nau'i a cikin APIphany yana ƙarfafa daidaitattun tsarin nau'i tare da bayanin kula na ma'ana. Babban hukunci na nau'in an tsara shi kamar haka:

$\Gamma \vdash e : \tau \Rightarrow \phi$

Inda $\Gamma$ shine yanayin nau'in, $e$ shine magana, $\tau$ shine nau'in tushe, kuma $\phi$ shine gyaran ma'ana wanda ke ɗaukar halin magana.

4.2 Algorithm na Haɗawa

Algorithm na haɗawa yana amfani da bincike mai jagorar nau'i tare da komawa baya. An ayyana sararin bincike ta:

$P := \text{apiCall}(p_1, \dots, p_n) \mid \text{map}(P, \lambda x. P) \mid \text{filter}(P, \lambda x. P) \mid \text{compose}(P, P)$

Algorithm ɗin yana datse ɗan takara mara inganci da wuri ta amfani da ƙuntatawa na nau'i da gyaran ma'ana.

5 Kimantawa ta Gwaji

5.1 Hanyar Aiki

An kimanta APIphany akan APIs guda uku na ainihin duniya (Slack, Stripe, GitHub) tare da ayyuka 32 da aka ciro daga ma'ajiyar GitHub da StackOverflow. Ayyukan sun haɗa da yanayin haɗin kai na gama-gari kamar dawo da imel ɗin membobi daga tashoshin Slack da sarrafa bayanan biya daga Stripe.

5.2 Sakamako & Aiki

APIphany ta sami nasarar nemo mafita masu kyau ga 29 cikin ayyuka 32 (kashi 90.6% na nasara). Daga cikin waɗannan, an ba da rahoton mafita 23 a cikin manyan sakamako goma na haɗawa, wanda ke nuna tasirin hanyar da ke jagorantar nau'i.

Yawan Nasarar

90.6%

An warware ayyuka 29/32

Sakamako 10 Mafi Girma

79.3%

Mafita 23 a cikin manya 10

Matsakaicin Lokacin Haɗawa

4.2s

Kowace aiki

6 Misalan Lamba

Misalin aikin haɗawa don dawo da imel ɗin membobin tashar Slack:

// Ƙayyadaddun bayanan shiga
Nau'i: Sunan Tasha -> Jerin[Imel]

// Mafita da aka haɗa
function getChannelEmails(channelName) {
  const channels = conversations_list();
  const targetChannel = channels.find(c => c.name === channelName);
  const memberIds = conversations_members(targetChannel.id);
  return memberIds.map(id => {
    const user = users_info(id);
    return user.profile.email;
  });
}

7 Ayyuka na Gaba & Alkibla

Hanyar APIphany za a iya faɗaɗa ta zuwa wasu yankuna da suka haɗa da:

  • Haɗin GraphQL API tare da binciken nau'i
  • Haɗin gwanon microservice a cikin aikace-aikacen gizo-na asali
  • Haɗin na'urar Internet of Things (IoT)
  • Haɗin tsarin kamfani da sabunta tsoffin API

Aikin gaba ya haɗa da haɗa kwaikwayon na'ura don mafi kyawun ƙididdiga nau'i da faɗaɗa goyon baya ga alamu na API na asynchronous.

8 Bincike na Asali

APIphany tana wakiltar ci gaba mai mahimmanci a cikin haɗin shirye-shirye don APIs na yanar gizo, tana magance muhimman ƙalubalen da suka iyakance hanyoyin da suka gabata. Haɗin nau'ikan ma'ana tare da haɗin tushen sassa ya haifar da tsari mai ƙarfi wanda ke haɗa gibin tsakanin hanyoyin na yau da kullun da ayyukan haɗin API na aiki.

Tsarin ƙididdiga nau'i a cikin APIphany yana raba kamanceceniya ta ra'ayi tare da tsarin nau'in gyara a cikin harsuna kamar Liquid Haskell [1], amma yana daidaita waɗannan ra'ayoyin don duniyar mai ƙarfi, mai tsari-rabu ta REST APIs. Wannan daidaitawa yana da mahimmanci domin, ba kamar harsunan da aka ƙayyade nau'i inda nau'ikan suke bayyane ba, REST APIs sau da yawa suna dogaro da tsarin JSON waɗanda ke ba da tsari amma ba bayanan nau'in ma'ana ba.

Dabarar aiwatarwa na kama-da-wane tana da ƙirar musamman, tana ɗaukar wahayi daga aiwatarwa ta alama a cikin tabbatar da shirye-shirye [2] amma tana amfani da ita don haɗin API. Wannan hanyar tana magance muhimmin damuwa game da aminci na aiwatar da ayyukan API masu lalata yayin tsarin haɗawa. An yi amfani da irin waɗannan dabarun a cikin inganta tambayar ma'ajiyar bayanai [3], amma APIphany tana daidaita su don mafi rikitarwar yanki na haɗin shirye-shirye na API da yawa.

Idan aka kwatanta da sauran hanyoyin haɗawa kamar FlashFill [4] don canjin kirtani ko SyPet [5] don haɗin tushen sassa, APIphany tana nuna yadda ilimin yanki na musamman (ma'anar REST API) zai iya inganta tasirin haɗawa sosai. Yawan nasarar kashi 90.6% akan ayyuka na ainihin duniya ya fi abin da za a yi tsammani daga na'urorin haɗawa na gaba ɗaya, yana goyan bayan hasashen cewa haɗin da aka san yanki yana da mahimmanci don aikace-aikacen aiki.

Bangaren sarrafa bayanai yana magance babban ƙalubali a cikin haɗin API: rashin daidaiton tsarin bayanan API da bukatun aikace-aikace. Wannan matsala yana tunawa da ƙalubalen canjin bayanai a cikin hanyoyin ETL (Cire, Canza, Loda) [6], amma APIphany ta warware ta ta hanyar haɗawa maimakon ƙayyadaddun bayanai na hannu. Hanyar na iya yiwuwa ta rinjayi ayyukan ƙira na API na gaba, tana ƙarfafa ƙarin tsarin bayanan nau'i a cikin ƙayyadaddun API.

Idan muka duba gaba, za a iya haɗa dabarun APIphany tare da manyan samfuran harshe don samar da lambar API. Duk da yake samfura kamar GPT-3 [7] suna nuna iyawa masu ban sha'awa don samar da lamba, ba su da cikakkiyar ma'ana ta ma'ana da garantin aminci na haɗin kai mai jagorar nau'i. Hanyar haɗin gwiwa wacce ta haɗa samarwar jijiya tare da tabbacin nau'i na iya wakiltar gaba gaba a cikin haɗin shirye-shirye na aiki.

9 Nassoshi

  1. Vazou, N., et al. "Nau'ikan gyara don Haskell." ICFP 2014.
  2. Baldoni, R., et al. "Binciken dabarun aiwatarwa na alama." ACM Computing Surveys 2018.
  3. Neumann, T. "Haɗa ingantaccen tsarin shirin tambaya don kayan aikin zamani." VLDB 2011.
  4. Gulwani, S. "Sarrafa sarrafa kirtani a cikin jadawali ta amfani da misalan shiga-fita." POPL 2011.
  5. Feng, Y., et al. "Haɗin tushen sassa don hadaddun APIs." OOPSLA 2017.
  6. Vassiliadis, P. "Binciken fasahar cire-canja-loda." IJDWM 2009.
  7. Brown, T., et al. "Samfuran harshe masu koyan ɗan guntu." NeurIPS 2020.
  8. Polikarpova, N., et al. "Haɗin shirye-shirye daga nau'ikan gyara na polymorphic." PLDI 2016.