问题标签 [crnk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
49 浏览

internationalization - JSON:API i18n 最佳实践

本地化我的 REST 对象(资源)(例如 eshop 产品)的最佳方法是什么?有两个子问题:

  1. 我应该如何设计产品对象?我们的客户必须能够使用至少一种默认语言(产品名称、描述......)来创建产品。如何管理其他语言?

  2. 如何检索这些对象?我只想返回一个所需的翻译,而不是全部。可能最好的方法是添加 Accept-Language 标头或 lang URL 参数。我想这意味着对象将有两种不同的表示形式(管理与消费)。这不会违反 REST 原则,但它可以与 JSON:API 库(尤其是https://www.crnk.io)一起使用吗?

0 投票
0 回答
17 浏览

java - 如何将 Spring Security OAuth 令牌添加到 Crnk Client?

我想使用 Crnk Client 3.4 来使用受 OAuth2 保护的 JSON:API 端点。我正在使用client_credentials授权和 Spring Security OAuth2(带引导)来配置凭据。

由于 Spring 团队决定尝试强制每个人使用响应式 WebClient,因此没有开箱即用的 RestTemplate 拦截器可以从 Spring Security OAuth2 检索访问令牌,这表明我必须做一些我自己的集成。

是否有向CrnkClient实例提供访问令牌的最佳实践?该文档SecurityModule顺便提到,但它似乎并不真正支持添加凭据。我可以编写一个模块,但似乎要添加我想要实现的标头HttpAdapterListener,并且模块不提供注册它们的机制;相反,他们有HttpRequestProcessor,客户端根本不使用。

我可以看到两个可能的干净集成选项;这些是推荐的还是不鼓励的?

  1. 编写缺少ClientHttpRequestInterceptor的集成 Spring Security OAuth2。使用并添加 OAuth2 拦截器RestTemplate在 bean 方法中创建一个。RestTemplateBuilder打电话crnkClient.setHttpAdapter(new RestTemplateAdapter(interceptedRt))
  2. 编写一个 CrnkModule实现HttpAdapterAware,它是一个 Spring bean,并提供一个HttpAdapterListener检索访问令牌并调用HttpAdapterRequest#header.