在Jersey JAX-RS(Dropwizard)中实现Case-Insensitivity

问题描述 投票:1回答:1

我希望在Jersey JAX-RS路径,查询/表单参数中强制不区分大小写。据我所知,该规范强制执行区分大小写;然而,像大多数不是Opus Dei成员的API开发人员一样,我发现花费数小时的调试时间处理查询/表单参数被忽略的后果是绝对徒劳的,因为用户使用了“helloWorld”而不是“helloworld”并且无法弄清楚为什么该方法没有按预期工作。我也认为实施不区分大小写没有合理的缺点,因为我不是一个受虐狂的精神病患者,因此永远不会为/ tedcruzsexscandal和/ tedCruzSexScandal构建两个独立的功能。我也从未在现实世界中看到过这样一个例子的例子(如果我有什么东西可以随意纠正我)。

如果Jersey有简单的@ CaseSensitive / @ CaseInsensitive注释会很好,这将完全消除这个非常非常普遍的需求 - 但遗憾的是这样的注释不存在和do not appear to be something with which the Jersey developers are concerned。因此,我正在寻找最安全,最少侵入性的标准方法来在Jersey中实现路径/查询/表单的不区分大小写,而不会产生意外后果。作为需要避免的后果的一个例子,我过去使用安全过滤器的实验表明,在aContainerRequestFilter中过早地手动处理包含表单参数的主体会破坏下游资源中的@FormParam("paramName")。确保解决方案适用于多部分表单和异步http也很重要。

如果有另一个类似于Jersey的Dropwizard兼容库并具有必要的外壳功能,请随时提及!

web-services rest jax-rs jersey-2.0 dropwizard
1个回答
0
投票

一个例子:

@Path("/{employees : (?i)employees}")
public class JerseyService
{
    //Code
}

enter link description here

© www.soinside.com 2019 - 2024. All rights reserved.