On Tue, Aug 6, 2019 at 9:35 PM Dushani Wellappili <dusha...@wso2.com> wrote:
> Hi all, > > When publishing to external stores, at runtime we need to use API create, > life-cycle change, create a version, add API thumbnail, delete Publisher > REST APIs. In order to create the API payload, we need to do the mapping > from API object to APIDTO. Reusing the existing APIDTO or APIMappingUtil > classes are not possible as we do not import rest.api dependencies to impl > level. Creating the payload manually from scratch will not be a very > cleaner approach, also we will be duplicating the same logic. > > Hence following are the options which might help us to achieve this. > > - Generate a REST client using publisher REST API swagger (using > openapi-generator plugin) and pack it as a jar in the product (packing the > component inside service-stubs). But for that, we need to pack an > additional set of dependencies to lib as well. For example, the generated > client is using okhttp client. We also need to add the APIMappingUtil logic > (to map API to DTO) as util class inside the same client. > > > - Generate only the DTO classes using publisher REST API swagger and > pack it as a jar in service-stubs. However, even in this case, API to DTO > object mapping will need to be defined separately in the same service > client. Conversion from DTO to JSON and invoking the HTTP client need to be > handled in WSO2APIPublisher code. > > > - Use import-export webapp, to import the API and modify the api.json > to include the artifact properties apiOwner, advertiseOnly, redirectURL, > zip, and export it to the external Store. A separate REST API call to > change the lifecycle of the API to "Published" state, needs to be done. > > +1 for doing import/export due to the simpleness and efficientness compared to using Publisher's /apis REST API for creating/updating the API. We can get extra advantages with supporting documents as well. Earlier we didn't support it and we automatically get the benefit by using import/export. > One of the main drawbacks of the first two options is maintaining the DTO, > Mapping logic in two different places whenever we do a change to the REST > API. Appreciate your response on this regard. > > Thanks > > *Dushani Wellappili* > Software Engineer - WSO2 > > Email : dusha...@wso2.com > Mobile : +94779367571 > Web : https://wso2.com/ > > > -- Malintha Amarasinghe *WSO2, Inc. - lean | enterprise | middleware* http://wso2.com/ Mobile : +94 712383306
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture