问题标签 [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.
internationalization - JSON:API i18n 最佳实践
本地化我的 REST 对象(资源)(例如 eshop 产品)的最佳方法是什么?有两个子问题:
我应该如何设计产品对象?我们的客户必须能够使用至少一种默认语言(产品名称、描述......)来创建产品。如何管理其他语言?
如何检索这些对象?我只想返回一个所需的翻译,而不是全部。可能最好的方法是添加 Accept-Language 标头或 lang URL 参数。我想这意味着对象将有两种不同的表示形式(管理与消费)。这不会违反 REST 原则,但它可以与 JSON:API 库(尤其是https://www.crnk.io)一起使用吗?
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
,客户端根本不使用。
我可以看到两个可能的干净集成选项;这些是推荐的还是不鼓励的?
- 编写缺少
ClientHttpRequestInterceptor
的集成 Spring Security OAuth2。使用并添加 OAuth2 拦截器RestTemplate
在 bean 方法中创建一个。RestTemplateBuilder
打电话crnkClient.setHttpAdapter(new RestTemplateAdapter(interceptedRt))
。 - 编写一个 Crnk
Module
实现HttpAdapterAware
,它是一个 Spring bean,并提供一个HttpAdapterListener
检索访问令牌并调用HttpAdapterRequest#header
.