wsdl -> openapi 3.0 : tool?

Fórumok

Mivel lehet wsdlből és annak xsdjlből openapi yaml 3.0-t csinálni?
Már egy ideje nem találom új google találatot.
Ajánljatok valamit!

Hozzászólások

Szerkesztve: 2022. 05. 30., h – 19:19

Szerintem nem igazán van értelme. 

SOAP esetén egy HTTP(S) endpointra küldesz SOAP envelope-okat (XML) POST HTTP metódussal. 

Az envelope-ok tartalmát pedig nem fogja leírni az OpenAPI. 

Ez két külön világ. 

Ez nem fog működni normálisan. Hogyan írod le a faultokat RESTful módon?
A WSDL más szemantikával rendelkezik, objektumoknak hívod a metódusait. A REST meg erőforrásokon végez HTTP segítségével definiált műveleteket.
Ezen kívül a WSDL jóval többet tud. 
Eleve a WSDL-ben hivatkozott XML Schema sokkal típusbiztosabb, mint bármilyen JSON schema.
A SOAP faultokat miként akarod lefedni HTTP hibakódokkal?
A SOAP le tud írni one-way, solicit-response és notification típusú műveleteket is a szokásos request-response helyett.

 Teljesen más világ a kettő, teljesen más szervezési elvekkel, szemantikával.

Pontosan ilyen esetekben használunk elfedő facade réteget. Open your imagination.
A facade réteg beszél SOAPul és kifele RESTnek látszik, modernizáció (!).
Az ügyfél nem programoztatja le a meglévő servicet, hanem újrahasznosítja, és hát nagyon jól is működik, csak a facade service-t favágás megírni.

Gondoltam más is csinál ilyesmit, nagy rá a kereslet.
 

https://openapi.tools/#converters nincs rajta jó.

De hogyan tudod automatikusan (ez ugye fontos kitétel) azt mondani, hogy feldolgozod szemantikusan helyesen a faultokat? Például egy "AmountMustBePositive" faultból mi lesz REST oldalon automatikusan? A WSDL-nek mondjuk ez a részlete:

<wsdl:definitions .... >
    <wsdl:portType .... > *
        <wsdl:operation name="nmtoken" parameterOrder="nmtokens">
           <wsdl:input name="PurchaseItemRequest"? message="tns:PIRequest"/>
           <wsdl:output name="TransactionResult" message="tns:TransactionResult"/>
           <wsdl:fault name="NoSuchPayee" message="tns:NSPFault"/>
           <wsdl:fault name="AmountMustBePositive" message="tns:AMBPFault"/>
        </wsdl:operation>
    </wsdl:portType >
</wsdl:definitions>

 

Ahhoz, hogy a faultokat egy generátor helyesen REST hibakódokra konvertálja, értenie kéne, hogy mit csinál. Az nem OpenAPI/RESTfulság, hogy minden POST, és ami eddig XML volt, az most JSON lesz. Akkor inkább ne használ OpenAPI-t, mert biztosan nem RESTful az API-d. Amit te favágásnak gondolsz, az csak formátumkonverzió, de a REST meg a SOAP teljesen más gondolkodásmódot jelent. Ha valakinek azt mondod, van egy REST service-d, ami mégsem REST csak RPC-over-HTTP-with-JSON, akkor inkább hagyd az egészet.