OpenAPI belirtimlerine ve araçlarına ilişkin sınırlamalar

Barındırılan şeffaf karar hizmetini (HTDS) OpenAPI tabanlı istemciler aracılığıyla kullandığınızda, OpenAPI belirtimlerine ve araçlarına ilişkin bazı kısıtlamalarla karşılaşabilirsiniz.

Belirtiler

Bazı OpenAPI başvuru araçlarında yanlış bir davranış nedeniyle belirli kullanım senaryolarında bir sorunla karşılaşabilirsiniz.

Tablo 1 'de, aşağıdaki araçlarla karşılaşabileceğiniz sorunlar açıklanır:

  • swagger-core Java™ kitaplığı (ürüne yerleşik): V1.5.10
  • Swagger Codegen kod oluşturma aracı: V2.2.1
  • Swagger Düzenleyicisi: V2.10.3

Operational Decision Manager , OpenAPI 3.0 'ı kullanır. OpenAPI 2.0 'dan 3.0 'a yükseltiyorsanız, güvenlik tanımları sürümler arasında değişiklik gösterir. Tanımlamayı güncellemezseniz, OpenAPI 3.0 'da bir kural kümesini çağırırken bir kimlik doğrulama hatasıyla karşılaşabilirsiniz.

Tablo 2: OpenAPI 3.x veri tipleri ve sınırlaması , aşağıdaki araçlarla karşılaşabileceğiniz Java tipi sorunları gösterir:

  • swagger-core Java™ kitaplığı (ürüne yerleşik): V2.1.4
  • swagger-codegen kod oluşturma aracı: V3.0.21

Sorunun tanılanması

You cannot name ruleset parameters Request or Response.

Tablo 1. Veri tipleri ve sınırlamaları
Veri türü Sınırlandırma
short tip The OpenAPI specification has only int32 and int64 representations for integer, and standard integer numbers (int and java.lang.Integer) and long numbers (long and java.lang.Long) respectively for mapping.

Kısa sayılar (short ve java.lang.Short) int32 ile eşlenir ve normal tamsayı numaraları olarak kabul edilir.

As a consequence, when you use short or java.lang.Short in rule projects or decision services, clients or interfaces that are generated from the OpenAPI definition file provided by the HTDS allow you to input integer numbers instead of short numbers. Bu nedenle, short için değer üst sınırından büyük bir sayı girmek, bir yürütme hatasında sona ermiş olur.

password veri tipi ek açıklaması Java XOM alanlarının @ApiModelProperty ek açıklamasıyla uyarlanması, HTDS tarafından oluşturulan OpenAPI tanımlama dosyasına yansıtılabilir.
Özellikle, OpenAPI 'daki Java nesnesinin alanı tipini belirtmek veya geçersiz kılmak için datatype özelliğini kullanabilirsiniz. However, if you set password as a data type, the OpenAPI definition file might not be generated. Aşağıdaki hatayı görürsünüz:
Tanınmayan Tip: [ null]

Bu sorun, OpenAPI tanımlama dosyaları oluşturmak için kullanılan swagger-core Java kitaplığında yanlış bir davranışa bağlı. password veri tipini kullanmaktan kaçının.

As a workaround, you can use a String field without an annotation (or at least without the password data type), and modify the generated OpenAPI definition file to specify "format": "password" in the corresponding field. Swagger Editor ile çalışır (test formu bunu dikkate alır, karakterlerin girildiği gibi gizlenir) ve Swagger Codegen aracı düzgün bir istemci oluşturabilir (alan, standart bir String türüyle gösterilir).

binary veri tipi ek açıklaması Similar to the password data type, a String field in a Java XOM can be annotated with the @ApiModelProperty annotation having binary as a data type property.

password veri tipinin tersine, bu binary veri tipi OpenAPI tanımlama dosyasının HTDS tarafından düzgün bir şekilde üretilmesini engellememektedir.

Ancak, bir Java istemcisi oluşturmak için Swagger Codegen aracını kullanırsanız, ek açıklamalı alan bir byte[] alanı olarak gösterilir ve bu alan yürütme sırasında kural kümesi yürütme hatasına yol açar.

Bu kullanım senaryosunun içinde, Swagger düzenleyicisini kullandığınızda böyle bir sorun ortaya çıkar.

byte tip byte ya da java.lang.Byte bir XOM alanı olarak ya da ruleset parametresi olarak kullanıldığında, yürütme sırasında kural kümesi yürütme hatasına yol açan, Swagger Codegen aracı tarafından oluşturulan bir Java istemcisinde byte[] olur.

Bu kullanım durumunda, byte 'lar dizgi olarak gösterildiği için, Swagger Editor düzenleyicisini kullandığınızda böyle bir sorun olmaz ve HTDS REST kabul eder ve bunları gerçek baytlara dönüştürür.

arrays Java istemcileri oluşturmak için Swagger Codegen aracını kullandığınızda diziler liste haline gelir.

Örneğin, String[] tipli bir alan List<String>olur.

Tablo 2. OpenAPI 3.x veri tipleri ve sınırlamaları
Veri türü Sınırlandırma
byte tip

When byte is used as a XOM field or a ruleset parameter, the swagger V3 core converts byte into swagger StringSchema, with the type string and the format byte. Bayt ([-128, 127]) ile ilgili rang sınırlamasına artık uyulmamaktadır.

Kullanılan değer sınırlamanın dışındaysa, sonucun yanlış olması gerekir.

char tip

When char is used as a XOM field or a ruleset parameter, the swagger V3 core converts char into swagger StringSchema, with the type string. char ' nin uzunluğuna artık uyulmamaktadır.

Tip, 1 'den büyük bir dizgi değeri uzunluğuyla kullanılırsa, yürütme bir hata atar.

short tip

When short is used as a XOM field or a ruleset parameter, the swagger V3 core converts short into swagger IntegerSchema, with the type integer and the format int32. The rang of int32 is [-2147483648, 2147483647], so the rang limitation of the short [-32768, 32767] is no longer respected.

Kullanılan değer kısa rangdışındaysa, sonuç yanlış olmalıdır.