我正在尝试测试Sabre CreatePassengerNameRecord rest API的集成。作为第一步,我尝试下载请求和响应的JSON模式,并尝试使用jsonschema2pojo生成POJO。但看起来模式文件都指向使用不存在的URL http://services.sabre.com的依赖引用。因此POJO代正在失败。请求和响应都会发生这种情况。我能够通过将XMLSchemaTypes.json依赖关系的URL更改为文档中提供的URL链接来修复请求模式,但响应具有未在任何地方指定的引用(请检查响应模式部分问题)。
API链接:https://developer.sabre.com/docs/rest_apis/air/book/create_passenger_name_record/
响应架构:
在回复中,引用了http://services.sabre.com/STL_Payload/v02_02,但不存在。
....
"CreatePassengerNameRecordRS" : {
"type" : "object",
"title" : "CreatePassengerNameRecordRS",
"properties" : {
"version" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 255
},
"ApplicationResults" : {
"$ref" : "http://services.sabre.com/STL_Payload/v02_02#/definitions/ApplicationResults"
....
如果您能为STL_Payload提供最新文件或将文档更新到最新的工作版本,那就太棒了。
答案 0 :(得分:1)
缺少的文件已添加到文档页面。 这应该可以让你前进。 id-s仍然用作标签而不是绝对资源指针,所以你仍然需要按照你所描述的方式使用它来使自动生成开箱即用。 我们将考虑您将来将它们转换为资源指针的请求。 再提一句:如果您使用的是jsonschema2pojo的Java-API版本,请使用以下配置:
GenerationConfig config = new DefaultGenerationConfig() {
public String getRefFragmentPathDelimiters() {
return "#/";
}
};
你需要它,因为jsonschema2pojo中的默认路径分隔符是“#/。”和“。”不适用于模式中声明的某些类型,如Text.Long
答案 1 :(得分:0)
+1 Saber请在http://services.sabre.com上提供JSON架构,因为在使用Quicktype生成模型时会出现问题。类型未正确解析。