REST API 无法正确识别波兰字符?

发布于 2024-12-09 00:43:39 字数 593 浏览 0 评论 0原文

我们在项目中使用 Drools Guvnor,并使用 Rest api 来检索包/资产版本。一切正常,直到我们尝试使用波兰语字符,例如“ł”。

例如,我们有一个名为“test3”的包和一个名为“wiek na podstawie PESEL - przedział 3”的资产(规则)(名称本身并不重要,重要的是最后一个词中的“ł”)。检索整个包的其余 xml 文件,我们得到这样的片段:

<assets>
   http://localhost:8080/drools-guvnor/rest/packages/test3/asset/wiek%20na%20podstawie%20PESEL%20-%20przedział%203
</assets>

除了 Guvnor API 的特定拼写错误(它应该是 /test3/assets,而不是 /test3/asset)此链接不起作用 - 浏览器自动将“ł”转换为 UTF-8 等效的“%C5%82”,并抛出一个错误代码,看起来好像 REST 无法识别该页面(资产名称不正确)。 “ ”与“%20”一样工作正常,问题似乎出在 16b 字符上。

这个问题有解决办法吗?

we're using Drools Guvnor in our project and we're using rest api to retrieve package / asset versions. Everything works fine, until we try to use polish chars, like "ł".

For example, we have package named 'test3' and an asset (rule) called "wiek na podstawie PESEL - przedział 3" (name itself is unimportant, important is this "ł" in last word). Retrieving rest xml file for whole package we get a fragment like this:

<assets>
   http://localhost:8080/drools-guvnor/rest/packages/test3/asset/wiek%20na%20podstawie%20PESEL%20-%20przedział%203
</assets>

Asside from a Guvnor API's specific typo (it should be /test3/assets, not /test3/asset) this link doesn't work - browser automatically converted the "ł" to UTF-8 equivalent "%C5%82" and threw an error code that looks as if this page was not recognized by REST (incorrect asset name). The " "s works fine as "%20"s, the problem seems to be with the 16b characters.

Is there a solution to this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无法言说的痛 2024-12-16 00:43:39

想出了一个简单的解决方法。我没有调用 {rest-path}/packages/{package-name}/assets/{asset-name} 来获取资产信息,而是调用 {rest-path}/packages/{package-name}/assets/ 来获取资产信息获取包中的所有资产。

这不仅很好,因为它忽略了不起作用的 http 请求,而且还避免了多个请求,在我们的例子中,这有助于证明应用程序的竞争条件问题(当我们检索所有资产版本信息以及请求之间的时间)有人在 Guvnor 重建了软件包)。

Figured out a simple workaround. Instead of calling {rest-path}/packages/{package-name}/assets/{asset-name} to get the asset info, I call {rest-path}/packages/{package-name}/assets/, to get all the assets in a package.

This is good not only, cause it omits the http request that's not working, but also it avoids multiple requests, which in our case contributes towards proofing an application to race condition problem (when we retrieve all the asset version info and in time between requests someone rebuilds package in Guvnor).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文