Yog li nws puas yog RAML lossis OAS (Swagger)?

Nyob rau hauv lub ntiaj teb dynamic ntawm microservices, txhua yam tuaj yeem hloov pauv-ib yam khoom tuaj yeem rov sau ua lus sib txawv, siv cov qauv sib txawv thiab cov qauv tsim. Tsuas yog cov ntawv cog lus yuav tsum nyob twj ywm tsis hloov pauv kom lub microservice tuaj yeem cuam tshuam nrog los ntawm sab nraud ntawm qee lub hauv paus mus tas li, tsis hais txog kev hloov pauv sab hauv. Thiab hnub no peb yuav tham txog peb qhov teeb meem ntawm kev xaiv ib hom kev piav qhia cov ntawv cog lus thiab qhia cov khoom qub uas peb pom.

Yog li nws puas yog RAML lossis OAS (Swagger)?

Ncej npaj Anna Melekhov ΠΈ Vladimir Lapatin

Microservices. Thaum tsim Acronis Cyber ​​​​Cloud, peb pom tau tias peb tsis tuaj yeem khiav lawv. Thiab tsim microservice yog tsis yooj yim sua yam tsis muaj formalizing daim ntawv cog lus, uas sawv cev rau lub interface ntawm microservice.

Tab sis thaum ib yam khoom muaj ntau tshaj ib feem, thiab kev cog lus kev loj hlob dhau los ua ib qho haujlwm tsis tu ncua, koj tsis tuaj yeem pab tab sis pib xav txog kev ua kom zoo dua. Nws dhau los ua pom tseeb tias qhov sib cuam tshuam (kev cog lus) thiab kev siv (microservice) yuav tsum sib luag, qhov sib txawv ntawm cov khoom sib txawv yuav tsum ua tib yam li tib yam, thiab tsis muaj kev txiav txim siab hauv nruab nrab ntawm tag nrho cov kev txiav txim siab no, txhua pab pawg yuav raug yuam kom ua. siv sij hawm ntau dua kom tau lawv.

Yog li nws puas yog RAML lossis OAS (Swagger)?
Amazon microservices daim duab los ntawm tw tw Werner Vogelis, CTO Amazon
Qhov teeb meem yog dab tsi? Qhov tseeb, muaj ob txoj hauv kev los cuam tshuam microservices - HTTP So thiab gRPC los ntawm Google. Tsis xav kom ntes tau hauv Google cov txheej txheem thev naus laus zis, peb xaiv HTTP So. HTTP REST cov lus cog tseg feem ntau tau piav qhia hauv ib qho ntawm ob hom: RAML thiab OAS, yav tas los hu ua Swagger.Yog li ntawd, txhua pab pawg txhim kho tau ntsib nrog qhov xav tau xaiv ib qho ntawm cov qauv. Tab sis raws li nws hloov tawm, ua qhov kev xaiv no yuav nyuaj heev.

Vim li cas thiaj xav tau cov lus piav qhia?

Cov lus piav qhia yog xav tau kom tus neeg siv sab nraud tuaj yeem yooj yim paub seb yuav ua li cas nrog koj cov kev pabcuam los ntawm nws qhov HTTP interface. Ntawd yog, nyob rau theem pib, cov lus piav qhia yuav tsum muaj tsawg kawg ib daim ntawv teev cov peev txheej, lawv cov txheej txheem HTTP, thov lub cev, cov npe ntawm cov tsis muaj, qhia txog qhov xav tau thiab txhawb nqa headers, nrog rau cov lej rov qab thiab cov lus teb. Ib qho tseem ceeb heev ntawm daim ntawv cog lus annotation yog lawv cov lus piav qhia ("Yuav ua li cas yog tias koj ntxiv cov lus nug no rau qhov kev thov?", "Qhov twg code 400 yuav xa rov qab?")

Txawm li cas los xij, thaum nws los tsim ntau tus microservices, koj xav rho tawm tus nqi ntxiv los ntawm cov ntawv sau. Piv txwv li, raws li RAML / Swagger, koj tuaj yeem tsim ob tus neeg siv khoom thiab tus neeg rau zaub mov code hauv ntau hom lus programming. Koj tseem tuaj yeem tau txais cov ntaub ntawv rau microservice thiab xa mus rau koj tus tsim tawm-portal :).

Yog li nws puas yog RAML lossis OAS (Swagger)?
Piv txwv ntawm daim ntawv cog lus piav qhia

Tsawg dua yog qhov kev coj ua ntawm kev sim microservices raws li kev cog lus piav qhia. Yog tias koj tau sau ob qho lus piav qhia thiab ib qho kev tivthaiv, ces koj tuaj yeem tsim qhov autotest uas kuaj xyuas qhov txaus ntawm cov kev pabcuam nrog ntau hom ntaub ntawv nkag. Cov kev pabcuam puas rov qab teb cov lej uas tsis tau piav qhia hauv cov lus piav qhia? Nws puas tuaj yeem ua kom pom tseeb cov ntaub ntawv tsis raug?

Tsis tas li ntawd, kev ua haujlwm zoo ntawm tsis tsuas yog cov ntawv cog lus rau lawv tus kheej, tab sis kuj yog cov cuab yeej rau kev pom cov lus piav qhia ua rau nws yooj yim rau kev ua haujlwm nrog microservice. Ntawd yog, yog tias tus kws tsim vaj tsev tau piav qhia txog daim ntawv cog lus zoo, raws li nws, cov neeg tsim qauv thiab cov neeg tsim khoom yuav siv cov kev pabcuam hauv lwm cov khoom yam tsis muaj sijhawm ntxiv.

Txhawm rau ua kom cov cuab yeej ntxiv, RAML thiab OAS muaj peev xwm ntxiv cov metadata uas tsis tau muab los ntawm tus qauv (Piv txwv li, qhov no yog ua li cas hauv OAS).

Feem ntau, lub peev xwm rau kev muaj tswv yim hauv kev siv cov ntawv cog lus rau microservices yog qhov loj ... tsawg kawg hauv kev xav.

Kev sib piv ntawm ib tug hedgehog nrog ib tug nab

Tam sim no, qhov tseem ceeb ntawm txoj kev loj hlob ntawm Acronis yog kev txhim kho ntawm Acronis Cyber ​​​​Platform. Acronis Cyber ​​​​Platform yog cov ntsiab lus tshiab ntawm kev koom ua ke ntawm cov kev pabcuam thib peb nrog Acronis Cyber ​​​​Cloud thiab tus neeg sawv cev ib feem. Txawm hais tias peb zoo siab nrog peb cov APIs sab hauv uas tau piav qhia hauv RAML, qhov yuav tsum tau tshaj tawm API rov hais dua cov lus nug ntawm kev xaiv: tus qauv annotation yog qhov zoo tshaj plaws los siv rau peb txoj haujlwm?

Thaum pib, nws zoo li muaj ob txoj kev daws teeb meem - qhov kev txhim kho feem ntau yog RAML thiab Swagger (lossis OAS). Tab sis qhov tseeb nws tau muab tawm tias muaj tsawg kawg tsis yog 2 txoj hauv kev, tab sis 3 lossis ntau dua.

Ntawm ib sab tes muaj RAML - lus muaj zog thiab siv tau zoo. Nws siv cov hierarchy thiab qub txeeg qub teg zoo, yog li cov hom ntawv no zoo dua rau cov tuam txhab loj uas xav tau ntau cov lus piav qhia - uas yog, tsis yog ib qho khoom, tab sis ntau lub microservices uas muaj feem ntau ntawm cov ntawv cog lus - authentication schemes, tib hom ntaub ntawv, lub cev yuam kev. .

Tab sis tus tsim tawm ntawm RAML, Mulesoft, tau koom nrog Open API consortium, uas tab tom tsim Ntxawg Yaj. Yog li ntawd, RAML ncua nws txoj kev loj hlob. Txhawm rau xav txog cov qauv ntawm qhov kev tshwm sim, xav txog tias cov saib xyuas ntawm lub ntsiab Linux Cheebtsam sab laug mus ua haujlwm ntawm Microsoft. Qhov xwm txheej no tsim qhov yuav tsum tau ua ua ntej rau kev siv Swagger, uas tab tom txhim kho dynamically thiab nyob rau hauv qhov tseeb - thib peb version - xyaum catches nrog RAML nyob rau hauv cov nqe lus ntawm saj zawg zog thiab functionality.

Yog tsis yog rau ib yam ...

Raws li nws hloov tawm, tsis yog txhua qhov chaw siv hluav taws xob qhib tau hloov kho rau OAS 3.0. Rau microservices hauv Go, qhov tseem ceeb tshaj plaws yuav yog qhov tsis muaj kev hloov pauv mus-swagger rau qhov tseeb version ntawm tus qauv. Txawm li cas los xij, qhov sib txawv ntawm Swagger 2 thiab Swagger 3 yog loj. Piv txwv li, nyob rau hauv lub thib peb version lub developers:

  • txhim kho kev piav qhia ntawm cov txheej txheem kev lees paub
  • tiav Kev them nyiaj yug JSON Schema
  • upgraded lub peev xwm ntxiv piv txwv

Qhov xwm txheej yog lom zem: thaum xaiv tus qauv, koj yuav tsum xav txog RAML, Swagger 2 thiab Swagger 3 raws li lwm txoj hauv kev. Txawm li cas los xij, tsuas yog Swagger 2 muaj kev txhawb nqa zoo rau OpenSource cov cuab yeej. RAML hloov tau yooj yim heev ... thiab nyuaj, thiab Swagger 3 tsis muaj kev txhawb nqa los ntawm zej zog, yog li koj yuav tau siv cov cuab yeej cuab tam lossis cov kev daws teeb meem lag luam, uas zoo li yuav kim heev.

Ntxiv mus, yog tias muaj ntau yam zoo hauv Swagger, xws li lub portal npaj txhij editor.swagger.io, ntawm qhov uas koj tuaj yeem xa cov lus piav qhia thiab tau txais nws qhov kev pom nrog cov lus piav qhia ntxaws, kev sib txuas thiab kev sib txuas, tom qab ntawd rau qhov tseem ceeb thiab tsawg tus phooj ywg RAML tsis muaj lub sijhawm zoo li no. Yog lawm, koj tuaj yeem tshawb nrhiav qee yam ntawm cov haujlwm ntawm GitHub, nrhiav ib qho analogue nyob ntawd thiab siv koj tus kheej. Txawm li cas los xij, nyob rau hauv txhua rooj plaub, ib tus neeg yuav tsum tau tswj hwm lub portal, uas tsis yooj yim rau kev siv yooj yim lossis kev sim xav tau. Tsis tas li ntawd, swagger yog ntau "tsis muaj cai", lossis ntau txoj kev ywj pheej - nws tuaj yeem tsim los ntawm cov lus hauv cov cai, uas, tau kawg, tawm tsam API thawj txoj cai thiab tsis tau txais kev txhawb nqa los ntawm ib qho ntawm RAML cov khoom siv.

Thaum ib zaug peb pib ua haujlwm nrog RAML ua hom lus hloov tau yooj yim, thiab vim li ntawd peb yuav tsum ua ntau yam ntawm peb tus kheej. Piv txwv li, ib qho ntawm cov phiaj xwm siv cov khoom siv hluav taws xob ramlfications hauv chav kuaj, uas tsuas yog txhawb RAML 0.8. Yog li peb yuav tsum tau ntxiv crutches kom cov nqi hluav taws xob tuaj yeem "noj" RAML version 1.0.

Koj puas yuav tsum xaiv?

Tom qab ua tiav cov txheej txheem ntawm kev daws teeb meem rau RAML, peb tuaj txog qhov xaus tias peb yuav tsum hloov RAML rau hauv Swagger 2 thiab ua tiav tag nrho cov automation, kev txheeb xyuas, kev sim thiab kev ua kom zoo tom qab hauv nws. Qhov no yog ib txoj hauv kev zoo los txhawb nqa ob qho kev hloov pauv ntawm RAML thiab cov cuab yeej hauv zej zog txhawb nqa los ntawm Swagger.

Txhawm rau daws qhov teeb meem no, muaj ob lub OpenSource cov cuab yeej uas yuav tsum muab kev cog lus hloov dua siab tshiab:

  1. oas-raml- converter yog ib qho khoom siv uas tsis muaj kev txhawb nqa tam sim no. Thaum ua hauj lwm nrog nws, peb nrhiav tau hais tias nws muaj ib tug xov tooj ntawm cov teeb meem nrog nyuaj RAMLs uas yog "kis" nyob rau hauv ib tug loj tus naj npawb ntawm cov ntaub ntawv. Qhov kev pab cuam no yog sau nyob rau hauv JavaScript thiab ua ib tug recursive traversal ntawm ib tsob ntoo syntax. Vim yog kev ntaus ntawv tsis zoo, nws nyuaj rau nkag siab cov cai no, yog li peb txiav txim siab tsis txhob nkim sij hawm sau cov ntaub ntawv rau cov khoom siv tuag.
  2. webapi-parser - ib lub cuab yeej los ntawm tib lub tuam txhab uas thov kom npaj txhij los hloov txhua yam thiab txhua yam, thiab nyob rau hauv txhua qhov kev taw qhia. Txog hnub tim, kev txhawb nqa tau tshaj tawm rau RAML 0.8, RAML 1.0 thiab Swagger 2.0. Txawm li cas los xij, thaum lub sijhawm peb tshawb fawb, kev siv hluav taws xob tseem nyob HEEV heev damp thiab siv tsis tau. Cov neeg tsim khoom tsim ib hom IR, cia lawv ntxiv cov qauv tshiab rau yav tom ntej. Tab sis txog tam sim no nws tsuas yog tsis ua haujlwm.

Thiab qhov no tsis yog txhua yam kev nyuaj uas peb tau ntsib. Ib qho ntawm cov kauj ruam hauv peb cov raj xa dej yog txhawm rau txheeb xyuas tias RAML los ntawm qhov chaw khaws cia yog qhov tseeb txheeb ze rau qhov tshwj xeeb. Peb sim ntau yam khoom siv. Kuj ceeb tias, lawv txhua tus tau swore ntawm peb cov lus piav qhia hauv ntau qhov chaw thiab nrog cov lus phem sib txawv. Thiab tsis yog ib txwm mus rau lub ntsiab lus :).

Thaum kawg, peb tau txiav txim siab rau qhov tam sim no outdated project, uas kuj muaj ib tug xov tooj ntawm cov teeb meem (qee zaum nws tsoo tawm ntawm xiav, muaj teeb meem thaum ua hauj lwm nrog cov lus qhia tsis tu ncua). Yog li, peb tsis tau nrhiav txoj hauv kev los daws cov teeb meem ntawm kev siv tau thiab hloov pauv raws li cov cuab yeej pub dawb, thiab txiav txim siab siv cov khoom siv hluav taws xob ua lag luam. Nyob rau hauv lub neej yav tom ntej, raws li OpenSource cov cuab yeej ua kom paub tab, qhov teeb meem no yuav yooj yim los daws. Nyob rau lub sijhawm no, cov nqi zog thiab lub sijhawm rau "kev ua tiav" zoo li peb tseem ceeb dua li tus nqi ntawm cov kev pabcuam kev lag luam.

xaus

Tom qab tag nrho cov no, peb xav qhia peb cov kev paub dhau los thiab nco ntsoov tias ua ntej xaiv cov cuab yeej los piav qhia cov ntawv cog lus, koj yuav tsum paub meej tias koj xav tau dab tsi los ntawm nws thiab seb koj puas kam nqis peev. Yog tias peb tsis nco qab txog OpenSource, twb muaj ntau cov kev pabcuam thiab cov khoom lag luam uas yuav pab koj tshawb xyuas, hloov pauv, thiab siv tau. Tab sis lawv kim heev, thiab qee zaum kim heev. Rau ib lub tuam txhab loj, cov nqi zoo li no zam tau, tab sis rau kev pib ua haujlwm lawv tuaj yeem dhau los ua lub nra hnyav.

Txiav txim siab cov txheej txheem uas koj yuav siv tom qab. Piv txwv li, yog tias koj tsuas yog xav tau tso tawm daim ntawv cog lus, nws yuav yooj yim dua rau kev siv Swagger 2, uas muaj API zoo nkauj, vim tias hauv RAML koj yuav tsum tsim thiab tswj cov kev pabcuam koj tus kheej.
Cov haujlwm ntau dua koj muaj, qhov xav tau ntau dua rau cov cuab yeej yuav yog, thiab lawv txawv rau cov platform sib txawv, thiab nws yog qhov zoo dua los ua kom paub koj tus kheej tam sim ntawd nrog cov ntawv muaj nyob rau hauv thiaj li yuav xaiv qhov txo koj cov nqi yav tom ntej.

Tab sis nws tsim nyog lees paub tias txhua qhov ecosystems uas muaj nyob niaj hnub no tsis zoo tag nrho. Yog li ntawd, yog tias muaj cov kiv cua hauv lub tuam txhab uas nyiam ua haujlwm hauv RAML vim tias "nws tso cai rau koj nthuav tawm cov kev xav tau yooj yim dua," lossis, ntawm qhov tsis sib xws, nyiam Swagger vim tias "nws yog qhov tseeb," nws yog qhov zoo tshaj kom tso lawv mus ua haujlwm. nyob rau hauv dab tsi lawv yog Lawv tau siv rau nws thiab xav tau, vim hais tias cov cuab yeej ntawm ib qho ntawm cov hom ntawv yuav tsum tau hloov kho nrog cov ntaub ntawv.

Raws li rau peb qhov kev paub dhau los, hauv cov ntawv hauv qab no peb yuav tham txog qhov kev kuaj xyuas zoo li qub thiab muaj zog peb ua raws li peb cov RAML-Swagger architecture, nrog rau cov ntaub ntawv dab tsi peb tsim los ntawm cov ntawv cog lus, thiab nws ua haujlwm li cas.

Tsuas yog cov neeg siv sau npe tuaj yeem koom nrog hauv daim ntawv ntsuam xyuas. Kos npe rau hauvthov.

Koj siv hom lus dab tsi los sau cov ntawv cog lus microservice?

  • RAML 0.8

  • RAML 1.0

  • Swagger 2

  • OAS 3 (UA)

  • Hneev Taw

  • Lwm yam

  • Tsis siv

100 cov neeg siv pov npav. 24 cov neeg siv tau txwv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib