Issue:
Currently CPS core API's are not consistent. for example few of the POST operations return "plain/text" but few of the APIs does not return any response. So to make those APIs consistent, we need to change response of existing APIs. To make APIs backward compatible, we need to apply API versioning so that previous APIs still return "plain/text". newer versions of POST APIs will not return any response body. below is details of changes which will be required to support API versioning. create dataspace API explained below for reference
create dataspace v1 | create dataspace v2 | |
---|---|---|
URI | POST: http://localhost:8883/cps/api/v1/dataspaces?dataspace-name=testDataspace | POST: http://localhost:8883/cps/api/v2/dataspaces?dataspace-name=testDataspace |
Response | HTTP Code : 201 content-type: plain/text response body : testDataspace | HTTP Code : 201 response body : NO CONTENT |
Note : all existing APIs will be supported in 'v2' also.
Code changes to support v2 :
S.No | changes |
---|---|
1. | change cps-rest/docs/openapi.yaml file /v1/dataspaces: /v2/dataspaces: |
2. | create cpsAdminV2.yml file and add POST APIs(as below) which need to be changed . dataspaces: |
3. | add CreateV2 in components.yml as below: CreatedV2: |
4. | autogenerated code in CpsAdminApi.java @RequestMapping(value = "/v2/dataspaces", |
5. | Implement autogenerated method "createDataspaceV2" in AdminRestController.java @Override |