REST JSON CreatePassengerNameRecord响应的模式无效

时间:2017-10-09 05:18:17

标签: sabre

我正在尝试测试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,但不存在。

档案:http://files.developer.sabre.com/doc/providerdoc/STPS/create_passenger_name_record/v200/CreatePassengerNameRecord2.0.0RS.json

....
"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提供最新文件或将文档更新到最新的工作版本,那就太棒了。

2 个答案:

答案 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生成模型时会出现问题。类型未正确解析。