Kọ API kan-ya XML (meji)

API MySklad akọkọ han 10 ọdun sẹyin. Ni gbogbo akoko yii a ti n ṣiṣẹ lori awọn ẹya ti o wa tẹlẹ ti API ati idagbasoke awọn tuntun. Ati ọpọlọpọ awọn ẹya ti API ti tẹlẹ ti sin.

Nkan yii yoo ni ọpọlọpọ awọn nkan: bawo ni a ṣe ṣẹda API, idi ti iṣẹ awọsanma nilo rẹ, kini o fun awọn olumulo, kini awọn aṣiṣe ti a ṣakoso lati tẹsiwaju ati ohun ti a fẹ ṣe atẹle.

Orukọ mi ni Oleg Alekseev oalexeev, Emi ni oludari imọ-ẹrọ ati oludasilẹ ti MySklad.

Kini idi ti o ṣe API fun iṣẹ kan

Awọn alabara wa, eyiti o jẹ ẹgbẹẹgbẹrun awọn alakoso iṣowo, lo awọn solusan awọsanma ni itara: ile-ifowopamọ, awọn ile itaja ori ayelujara, ṣiṣe iṣiro eru, CRM. Ni kete ti o ba sopọ si ọkan, o ṣoro lati da duro. Ati nisisiyi iṣẹ karun, kẹjọ, kẹwa jẹ ki iṣẹ iṣowo rọrun, ṣugbọn awọn olumulo gbe data laarin awọn iṣẹ awọsanma wọnyi pẹlu ọwọ. Iṣẹ yipada si alaburuku.

Ojutu ti o han ni lati fun awọn olumulo ni agbara lati gbe data laarin awọn iṣẹ awọsanma. Fun apẹẹrẹ, gbe wọle ati gbejade data si okeere bi awọn faili, eyiti o le ṣe gbejade si iṣẹ ti o fẹ. Awọn faili maa n yipada lati ba ọna kika iṣẹ kọọkan mu. Eyi jẹ diẹ sii tabi kere si iṣẹ afọwọṣe ti o rọrun, ṣugbọn pẹlu ilosoke ninu nọmba awọn iṣẹ wọnyi, o di pupọ ati siwaju sii nira lati ṣe.

Nitorinaa, igbesẹ ti n tẹle ni API. Pẹlu rẹ, iṣẹ awọsanma ni anfani lati otitọ pe o so awọn iṣẹ pupọ pọ ni aaye kan. Awọn ifarahan ti iru ilolupo eda abemiran ṣe ifamọra awọn onibara titun nitori awọn anfani afikun. Ọja kan pẹlu iṣẹ ṣiṣe tuntun di ere diẹ sii ati iwulo.

Ti o ba ṣẹda awọn atọkun siseto tirẹ, eyi ṣe ifamọra awọn eniyan tita ẹni-kẹta ni irisi awọn pirogirama ti o mọ nipa ọja rẹ ọpẹ si API. Wọn bẹrẹ lati kọ awọn solusan ti o da lori API ti a dabaa ati ṣe owo nipa ṣiṣe adaṣe awọn iṣẹ ṣiṣe awọn alabara wọn.

Eto iṣiro MySklad da lori awọn ilana ti o rọrun. Ohun akọkọ ni lati ṣiṣẹ pẹlu awọn iwe aṣẹ akọkọ, agbara lati gba ati gbigbe awọn ọja, ati gba awọn ijabọ iṣowo ti o da lori awọn iwe akọkọ. Gbigbe data tun wa, fun apẹẹrẹ si iṣiro awọsanma, ati gbigba rẹ lati awọn eto ile-ifowopamọ tabi awọn ile-iṣẹ soobu. A tun ṣiṣẹ pẹlu awọn ile itaja ori ayelujara: a gba alaye nipa awọn ọja ati firanṣẹ alaye nipa awọn iwọntunwọnsi.

Kọ API kan-ya XML (meji)

API akọkọ ti MySklad

Lori awọn ọdun 10 ti MySklad ṣiṣẹ pẹlu API, a ti gba gbogbo awọn akojọpọ ti o gba wa laaye lati ṣe paṣipaarọ data, ṣiṣẹ pẹlu awọn ile-ifowopamọ, ṣe awọn sisanwo ati lo telephony ita.

Ni ọdun akọkọ, a jẹ ki o ṣee ṣe lati ṣe igbasilẹ eyikeyi data ni ọna kika XML. Ni akoko yẹn, o ṣe alaye pupọ ati pe o wọpọ julọ fun awọn olumulo lati tọju data offline, kii ṣe ninu awọsanma diẹ, a si fun wọn. Awọn ikojọpọ ti a bere nipa afọwọṣe okeere lati ni wiwo. Iyẹn ni, ko le pe ni API.

Ni akoko kanna, a bẹrẹ lati ni ifọwọsowọpọ pẹlu ile-iṣẹ Rusagro - wọn ti lo ERP “agbalagba” tẹlẹ fun iṣelọpọ ati igbero tita, ṣugbọn wọn ṣe adaṣe awọn ikojọpọ awọn ọkọ ayọkẹlẹ ni awọn ile-iṣelọpọ ni MySklad. Eyi ni bii a ṣe ni awọn rudiments akọkọ ti API gidi kan: paṣipaarọ laarin iṣẹ wa ati ERP waye nipa fifiranṣẹ faili nla kan pẹlu data lori gbogbo iru awọn iwe aṣẹ.

Eyi jẹ aṣayan ti o dara fun paṣipaarọ data ipele, ṣugbọn pẹlu awọn iwe aṣẹ a ni lati gbe awọn igbẹkẹle wọn: alaye nipa awọn ẹru, awọn alagbaṣe ati awọn ile itaja. Iru idalẹnu bẹ ko nira lati ṣe ipilẹṣẹ nigbati o ba njade okeere, ṣugbọn o nira pupọ lati ṣe itupalẹ nigbati o ba n gbe wọle, nitori gbogbo alaye wa ninu apo kan: mejeeji nipa awọn iwe aṣẹ tuntun ati nipa awọn ti o wa tẹlẹ.

API XML akọkọ ko gbe pẹ - ọdun meji lẹhinna a bẹrẹ atunṣe rẹ. Paapaa ni ibẹrẹ iṣẹ rẹ, a ṣe ọpọlọpọ awọn aṣiṣe nigba kikọ wiwo sọfitiwia naa.

Kọ API kan-ya XML (meji)
Bawo ni XML API ṣe: apejuwe lati ọkan ninu awọn ayaworan ile wa. Nipa ọna, duro aifwy fun awọn nkan rẹ.

Eyi ni awọn aṣiṣe akọkọ wa:

  1. Iṣamisi JAXB ni a ṣe taara lori awọn ewa nkan. A lo Hibernate lati ṣe ibasọrọ pẹlu ibi ipamọ data, ati pe a ṣe isamisi JAXB fun awọn ewa kanna. Aṣiṣe yii farahan lẹsẹkẹsẹ: imudojuiwọn eyikeyi si eto data ti o yori si iwulo lati ṣe akiyesi gbogbo eniyan ti o lo API, tabi lati kọ awọn crutches ti yoo rii daju ibamu pẹlu eto data iṣaaju.
  2. API dagba bi afikun, ati pe a ko ṣalaye ni ibẹrẹ kini apakan ti ọja naa. Wọn ko paapaa ronu boya API jẹ nkan pataki, boya o jẹ dandan lati ṣetọju ibamu sẹhin fun awọn alabara akọkọ rẹ. Ni aaye kan, nọmba awọn olumulo API jẹ nipa 5% ti nọmba kekere, ko si si akiyesi wọn. Sisẹ gbogbo agbaye ti a ṣe ni akoko kan yori si wa ni lilo bi ẹhin. Sisẹ yii kii ṣe GraphQL rara, ṣugbọn ohunkan bii iyẹn - o ṣiṣẹ nipasẹ ọpọlọpọ awọn paramita okun ibeere. Pẹlu iru ohun elo ti o lagbara, o ṣoro fun awọn olumulo lati koju, ati pe a gbe awọn ibeere lọ si wa ki wọn firanṣẹ taara lati UI ti awọn ile itaja ori ayelujara wọn. Ipo naa jẹ iyalẹnu ti ko dun, nitori ipese iru iṣẹ kan yẹ ki o nilo idiyele oriṣiriṣi ati oye ti o yatọ gbogbogbo ti API funrararẹ bi ọja kan.
  3. Nitori otitọ pe API ko ni idagbasoke bi ọja akọkọ, awọn iwe API ti ṣejade ati titẹjade lori ipilẹ ti o ku - nipasẹ imọ-ẹrọ iyipada. Ọna yii dabi ohun rọrun ati irọrun, ṣugbọn o tako ṣiṣẹ labẹ adehun kan. Eyi jẹ nigbati paati kan wa pẹlu ero ṣiṣe tito tẹlẹ. Olùgbéejáde ṣe imuse rẹ ni ibamu pẹlu ero ati iṣẹ-ṣiṣe yii, paati ti ni idanwo, ati alabara gba ọja kan ti o baamu imọran oluyanju naa. Imọ-ẹrọ yiyipada jabọ sori ọja ọja ti o wa ni irọrun: pẹlu awọn crutches, awọn solusan ajeji ati awọn kẹkẹ kẹkẹ dipo iṣẹ ṣiṣe pataki.
  4. Gbogbo ṣiṣan awọn ibeere ti o wa nipasẹ API ni a le ṣe atupale bi ohunkohun ju Nginx tabi akọọlẹ olupin ohun elo lọ. Eyi ko gba wa laaye lati ṣe idanimọ awọn agbegbe koko-ọrọ, ayafi boya nipasẹ awọn olumulo ati awọn alabapin. Ti ko ba si ọna lati ṣe ilana ohun elo tabi iforukọsilẹ alabara, ko ṣee ṣe lati ṣe itupalẹ ipo naa. Iṣoro yii ni ipa ti o kere julọ lori idagbasoke API; o jẹ diẹ sii nipa agbọye ibaramu ati iṣẹ ṣiṣe rẹ.

Igbiyanju nọmba meji: REST API

Ni ọdun 2010, a gbiyanju lati kọ eto paṣipaarọ pẹlu iṣiro ori ayelujara - BukhSoft. Ko gba kuro. Ṣugbọn lakoko ilana iṣọpọ, API ti o ni kikun han: iṣẹ paṣipaarọ REST kan, nibiti ko si awọn ominira bii iraye si awọn iṣẹ ni irisi awọn ipe RPC. Gbogbo ibaraẹnisọrọ pẹlu API ni a mu wa si ipo boṣewa fun isinmi: laini ibeere naa ni orukọ nkan naa, ati pe iṣẹ ti o ṣe pẹlu rẹ jẹ pato nipa lilo ọna http. A ṣafikun sisẹ ti o da lori nigbati awọn nkan ṣe imudojuiwọn, ati awọn olumulo ni bayi ni aye lati kọ atunwi pẹlu awọn eto wọn.

Ni ọdun kanna, API kan fun sisọjade ile-itaja ati awọn iwọntunwọnsi akojo oja han. Awọn ẹya ti o niyelori julọ ti eto naa ti wa fun awọn olumulo nipasẹ API - paṣipaarọ awọn iwe aṣẹ akọkọ ati data iṣiro lori awọn iwọntunwọnsi ati idiyele awọn ẹru.

Ni Oṣu Kejila ọdun 2015, RetailCRM ṣe atẹjade ile-ikawe ẹni-kẹta akọkọ lati wọle si API wa. O bẹrẹ lati lo ni itara, lakoko ti gbaye-gbale ti iṣẹ naa lapapọ dagba, fifuye lori API dagba yiyara ju fifuye lori wiwo wẹẹbu lọ. Ni ọjọ kan idagba yipada sinu fifuye fifuye.

Kọ API kan-ya XML (meji)

Kọ API kan-ya XML (meji)

Ati fo yii, ti o tọka nipasẹ itọka apa osi, ṣe iyalẹnu fun olupin ti n sin API wa patapata. A lo ọsẹ kan lati mọ kini gangan ti n ṣẹda ẹru yii. O wa jade pe iwọnyi jẹ awọn ibeere kanna ti a gbejade si API wa lati awọn iwaju alabara. Nipa awọn onibara 50 jẹ ohun gbogbo. O jẹ lẹhinna pe a rii ọkan ninu awọn aṣiṣe wa - aini awọn opin pipe.

Bi abajade, a ṣafihan opin kan lori nọmba awọn ibeere nigbakanna. Bayi o ṣee ṣe lati ṣii ko ju awọn ibeere meji lọ ni akoko kanna lati akọọlẹ kan. Eyi to lati ṣiṣẹ ni ipo atunṣe fun paṣipaarọ data ni ipo ipele. Ati awọn ti o fẹ lati lo wa bi ẹhin, lati akoko yẹn lọ, ni a fi agbara mu lati dara ni ibamu pẹlu awọn idiyele, niwon wọn ṣe afihan iṣẹ lori awọn iroyin pupọ sinu software wọn.

Jẹ ki a ṣeto ni ibere

Tẹlẹ lati ọdun 2014, ibeere fun API ti o wa tẹlẹ ti di apakan pataki ti iṣowo naa, ati pe API funrararẹ n ṣe iwọn iwọn data ti o tobi julọ ni paṣipaarọ data pẹlu awọn alabara. Ni ọdun 2015, a ṣe ifilọlẹ iṣẹ akanṣe kan lati nu API kuro. A yan JSON dipo XML bi ọna kika ati bẹrẹ lati kọ o da lori awọn ẹya ti a ṣe idanimọ lakoko imuse ti ẹya ti tẹlẹ:

  1. Agbara lati ṣakoso awọn ẹya. Ti ikede gba ọ laaye lati ṣe agbekalẹ ẹya tuntun laisi ni ipa ohun elo ti o wa tẹlẹ tabi idilọwọ iriri olumulo.
  2. Agbara fun olumulo lati wo metadata ninu idahun funrararẹ ti o gba.
  3. Agbara lati ṣe paṣipaarọ awọn iwe aṣẹ nla. Ti a ba ṣe ilana iwe-ipamọ pẹlu diẹ sii ju awọn ipo 4-5 ẹgbẹrun, eyi di iṣoro fun olupin naa: idunadura pipẹ, ibeere http gun. A ṣe ẹrọ pataki kan ti o fun ọ laaye lati ṣe imudojuiwọn iwe-ipamọ ni awọn apakan ati ṣakoso awọn ipo kọọkan ti iwe yii nipa fifiranṣẹ wọn si olupin naa.
  4. Awọn irinṣẹ fun ẹda tun wa ninu ẹya ti tẹlẹ.
  5. Awọn opin fifuye dabi ohun-ijogun ti rake ti a ti tẹ lori ẹya ti tẹlẹ. A ṣafihan awọn opin lori nọmba awọn ibeere ni akoko kan, nọmba awọn ibeere ti o jọra ati awọn ibeere lati adiresi IP kan.

Lati igbanna, a ti tu awọn ẹya kekere meji ti API silẹ ati ṣe ifilọlẹ ọpọlọpọ awọn API amọja, ṣugbọn ọna gbogbogbo ko yipada. Ọna kika paṣipaarọ ti a ṣe imudojuiwọn ati faaji tuntun jẹ ki o ṣee ṣe lati ṣatunṣe awọn abawọn ninu API ni iyara pupọ.

MySklad API loni

Loni, MySklad API yanju ọpọlọpọ awọn iṣoro:

  • paṣipaarọ data pẹlu awọn ile itaja ori ayelujara, awọn ọna ṣiṣe iṣiro, awọn banki;
  • gbigba data iṣiro ati awọn ijabọ;
  • lo bi ẹhin fun awọn ohun elo alabara - awọn ohun elo alagbeka wa ati iṣẹ iforukọsilẹ owo tabili tabili nipasẹ API
  • fifiranṣẹ awọn iwifunni nipa awọn iyipada data ni MySklad - webhooks;
  • tẹlifoonu;
  • iṣootọ awọn ọna šiše.

Da lori API, Alakoso wa Askar Rakhimberdiev imu ni wakati mẹrin Mo kọ bot telegram kan ti o fa awọn ajẹkù nipasẹ API: github.com/arahimberdiev/com-lognex-telegram-moysklad-stock

Bayi gbẹ awọn nọmba.

Eyi ni awọn iṣiro wa fun API REST atijọ:

  • Awọn ile-iṣẹ 400;
  • 600 olumulo;
  • Awọn ibeere miliọnu 2 fun ọjọ kan;
  • 200 GB / ọjọ ti njade ijabọ.

Ati pe eyi ni ohun ti a wa pẹlu fun gbogbo awọn API MySklad:

  • diẹ sii ju awọn iṣọpọ 70 (diẹ ninu wọn le ṣee wo nibi www.moysklad.ru/integratsii);
  • Awọn ile-iṣẹ 8500;
  • 12 awọn olumulo;
  • Awọn ibeere miliọnu 46 fun ọjọ kan;
  • 2 TB / ọjọ ti njade ijabọ.

Kini atẹle

Awọn ero idagbasoke API wa labẹ ijiroro ti nṣiṣe lọwọ. A gbiyanju lati ṣe akiyesi iriri iṣẹ ti awọn olumulo pese fun wa. Ko ṣee ṣe nigbagbogbo lati ṣe ohun gbogbo ni ẹẹkan, ṣugbọn ẹya tuntun ti API wa ni ayika igun pẹlu metadata ti o rọrun diẹ sii ati ilana ti o kere si, OAuth fun ijẹrisi, ati API fun awọn ohun elo ti a ṣe sinu wiwo.

O le tẹle awọn iroyin lori oju opo wẹẹbu pataki kan fun awọn idagbasoke ti awọn iṣọpọ pẹlu MySklad: dev.moysklad.ru.

orisun: www.habr.com

Fi ọrọìwòye kun