【问题标题】:Invalid schema for REST JSON CreatePassengerNameRecord responseREST JSON CreatePassengerNameRecord 响应的架构无效
【发布时间】:2017-10-09 05:18:17
【问题描述】:

我正在尝试测试 Sabre CreatePassengerNameRecord REST API 的集成。作为第一步,我尝试下载请求和响应的 JSON 模式,并尝试使用 jsonschema2pojo 生成 POJO。但看起来模式文件都使用不存在的 URL http://services.sabre.com 指向依赖引用。因此 POJO 生成失败了。请求和响应都会发生这种情况。我能够通过将 XMLSchemaTypes.json 依赖项的 URL 更改为文档中提供的 URL 链接来修复请求模式,但是响应有一个未在任何地方指定的引用(请检查 Response schema 部分问题)。

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

【问题讨论】:

    标签: sabre


    【解决方案1】:

    缺失的文件已添加到文档页面。 这应该可以让你继续前进。 id-s 仍然用作标签而不是绝对资源指针,因此您仍然需要按照您描述的方式使用它,以使自动生成开箱即用。 将来我们会考虑您将它们转换为资源指针的请求。 还有一个提示:如果您使用的是 jsonschema2pojo 的 Java-API 版本,请使用它进行配置:

    GenerationConfig config = new DefaultGenerationConfig() {
        public String getRefFragmentPathDelimiters() {
            return "#/";
        }
    };
    

    您需要它,因为 jsonschema2pojo 中的默认路径分隔符是“#/”。和“。”不适用于架构中声明的某些类型,例如 Text.Long

    【讨论】:

      【解决方案2】:

      +1 Sabre 请在http://services.sabre.com 上提供 JSON 模式,因为在使用 Quicktype 生成模型时会出现问题。没有正确解析类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-07
        • 2015-12-21
        • 2021-11-05
        • 2021-01-30
        • 2015-12-27
        • 1970-01-01
        • 2017-04-21
        相关资源
        最近更新 更多