问题描述
在使用API Management服务时,以Echo API(默认创建)举例,它会在Request的body部分默认设置一个SAMPLE指,这样在测试接口时候,就会有默认的Body内容,我们只需要根据JSON值就可以了。测试非常便捷。
那么,如果需要通过Java APIM的SDK来创建一个新接口,并且为它设置SAMPLE值,如何来实现呢?
问题解答
查看源代码文件,可以使用 withExamples 方法来实现 public RepresentationContract
withExamples(Map<String,ParameterExampleContract> examples)
示例代码包含三部分
第一部分:以Vehicle为原型,生成ParameterExampleContract对象
Vehicle vehicle = new Vehicle().withVehicleType("vehicleType").withSpeedUnit("KM").withMaxSpeed(125).withAvgSpeed(90); ParameterExampleContract parameterExample = new ParameterExampleContract().withValue(vehicle);
第二部分:把第一部分生成的对象,加入到Map对象
Map<String, ParameterExampleContract> map = new HashMap<String, ParameterExampleContract>(); map.put("default", parameterExample);
注意:一定要设置Map的Key,第一个参数一定要为 default。
第三部分:在APIM的manager创建函数中使用map对象
manager .apiOperations() .define("newoperations") .withExistingApi("rg1", "apimService2", "echo-api") .withDisplayName("test sample") .withMethod("POST") .withUrlTemplate("/user1") .withTemplateParameters(Arrays.asList()) .withDescription("This can only be done by the logged in user.") .withRequest( new RequestContract() .withDescription("Created user object") .withQueryParameters(Arrays.asList()) .withHeaders(Arrays.asList()) .withRepresentations( Arrays .asList( new RepresentationContract() .withContentType("application/json") .withExamples(map) .withTypeName("User")))) .withResponses( Arrays.asList( new ResponseContract() .withStatusCode(200) .withDescription("successful operation") .withRepresentations( Arrays.asList( new RepresentationContract() .withContentType("application/xml"), new RepresentationContract() .withContentType("application/json"))) .withHeaders(Arrays.asList()))) .create();
附录一:第一部分中Vehicle 类的定义截图
附录二:创建成功后的截图
参考资料
Azure Resource Manager ApiManagement client library for Java: https://docs.microsoft.com/en-us/java/api/overview/azure/resourcemanager-apimanagement-readme?view=azure-java-preview
RepresentationContract.withExamples(Map<String,ParameterExampleContract> examples) Method : https://docs.microsoft.com/en-us/java/api/com.azure.resourcemanager.apimanagement.models.representationcontract.withexamples?view=azure-java-preview