首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么javax.ws.rs.core.UriBuilder、fromUri()方法在主机名URI的末尾添加额外的"/“?

javax.ws.rs.core.UriBuilder是Java中用于构建URI的类,fromUri()方法是UriBuilder类中的一个静态方法,用于创建一个新的UriBuilder实例并设置URI的初始值。

在使用fromUri()方法创建UriBuilder实例后,可以通过调用其方法来构建URI。其中,host()方法用于设置主机名,path()方法用于设置路径。

在调用host()方法设置主机名时,如果主机名URI的末尾没有"/",则fromUri()方法会自动在主机名URI的末尾添加一个"/"。这是为了确保URI的正确性和一致性。

添加额外的"/"有以下几个原因:

  1. 规范性:根据URI的规范,主机名URI的末尾应该包含一个"/"。通过自动添加额外的"/",确保了URI的规范性。
  2. 一致性:在URI中,路径通常以"/"开头。通过在主机名URI的末尾添加额外的"/",可以确保路径与主机名之间有一个明确的分隔符,提高了URI的一致性。
  3. 避免歧义:如果主机名URI的末尾没有"/",在构建URI时可能会出现歧义。例如,如果主机名URI是"example.com",路径是"path",如果不添加额外的"/",则构建的URI可能是"example.compath",而不是期望的"example.com/path"。

综上所述,javax.ws.rs.core.UriBuilder的fromUri()方法在主机名URI的末尾添加额外的"/"是为了确保URI的规范性、一致性和避免歧义。

相关搜索:为什么ofstream::write会在文件末尾添加额外的字节?为什么file.write()要在末尾添加一个额外的字符串?为什么Laravel在我的URL末尾添加了片段'#/‘?为什么JavaScript要在已解析数字的末尾添加一个额外的非零数字使用批处理脚本将表导出到csv时,在末尾添加额外的文本为什么此代码在使用"\n“时会添加额外的空行?在content控件范围内插入html文件会在content控件的末尾添加额外空间为什么在我从PHP转换的文本末尾添加了特殊字符?为什么tf.train.batch在TensorFlow中的输出中添加了额外的维度?为什么在使用媒体查询时需要为最大高度添加额外的像素?为什么在mapbox-gl中添加填充颜色和停止的setPaintProperty会给图层添加额外的颜色?我的for循环在int数组中添加了额外的元素,我不明白为什么为什么在LinkedList末尾添加一个元素比添加一个ArrayList要花更长的时间?如何在使用DRF视图集的操作方法时在api末尾添加{id}查找在Rust中,在字符串(或&str)的末尾添加换行符最方便的方法是什么?为什么第一个div内容在顶部添加额外的填充/边距?为什么django在最后添加了一个额外的斜杠/,我想删除它?为什么typescript不能确保在React中添加额外属性的通用高阶组件中的类型安全?为什么7zip和gzip在gzip压缩数据的末尾添加0x0A为什么在将方法调用的结果添加到列表时不执行方法调用?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jersey框架一:Jersey RESTful WebService框架简介

开发RESTful WebService意味着支持多种媒体类型以及抽象底层客户端-服务器通信细节,如果没有一个好工具包可用,这将是一个困难任务 为了简化使用JAVA开发RESTful WebService...如果此时客户端请求URI为http://127.0.0.1:10000/service/sean,则sub_path值为sean @PathParam用来将请求URI一部分作为方法参数传入方法中...对URI动态部分,可以自定义校验正则表达式,如果请求参数校验失败,容器返回404 Not Found @Path("{sub_path:[A-Z]*}") @GET 表明被注解方法响应HTTP GET...per-request,也就是系统会为每个匹配资源类URI请求创建一个实例,这样效率很低,可以对资源类使用@Singleton注解,这样应用范围内,只会创建资源类一个实例 服务端程序如下: package...").build(); resource = client.resource(uri); //header方法可用来添加HTTP头 ClientResponse

1.4K20

Flutter第6天--异步-IO+网络访问+json

文中根据实际情况,分享一些个人编程心得,自己参考一下,取长补短 ---- 一、单线程模型下异步操作 为什么强调是单线程:Dart是单线程模型,单线程模型,单线程模型!!!...为例 也许看到File.fromUri(Uri uri)你会说Uri我不会,然后就不管了,如果有空就看两眼呗,又不会吃亏 我经验是先看它构造方法,然后再看字段,再总览一下方法名(Ctr+F12...//可见-- new Uri.httpscheme是http,而这里不是file所以报错 至少你知识库中多收录了一条信息:File.fromUri()不能访问非file类型Uri 也知道了...uri访问资源.png 从一个小API开始,让自己尽可能去多认识一些事物,并不是说你要把源码都理得很清楚 自己接受范围150%之内可以去尝试,失败了没有关系,总比看那些驳来驳去文章有意义...: 0.添加依赖:pubspec.yamldependencies下 http: ^0.11.3+17 我服务器上提供了一些网络请求Api,如果你想自己搭建服务器接口,请看这篇 来回顾一下接口

2.1K30
  • 【译】Java 构造 URL 请求链接推荐姿势

    Java 中,我们可以使用多个库来动态地向 URL 中添加查询并保证 URL 有效性。 本文中,我们将学习如何使用其中三个库。...UriBuilder 对象提供了 fromUri() 方法来创建基本 URI,并提供了 queryParam() 方法添加查询。...5、结论 本文中,我们看到了 Java 中操作 URL 三种方法。...我们可以使用 Java 扩展包、Apache UriBuilder 或 spring-web 解决方案来添加查询,每种方法都能确保 URL 结构有效,并允许我们动态地构建它们。...因此,决定在应用程序中使用哪种方法取决于我们可用包和导入,以及我们已经使用方法。每个库都提供了一系列有用功能,因此我们还应考虑是否可以同时满足项目中其他需求。

    1.1K10

    ASP.NET WebAPI 中参数绑定

    比如一个典型 WebAPI 方法: IHttpActionResult Put(int id, Product item) { ... } 参数 id 是一个简单类型, 所以从 request URI...使用 [FromUri] 要强制 WebAPI 从 URL 读取一个复杂类型参数, 则需要在该参数上添加 FromUri 标记。...location=47.67856,-122.131 ; 设置 Model Binder 首先, 可以 action 方法参数上添加 [ModelBinder] 标记, 例如: public HttpResponseMessage...中查找一个返回 HttpParameterBinding 实例函数; 最后, 使用上面提到默认规则: 如果参数是一个简单类型或者指定了类型转换器, 从 URI 绑定, 相当于参数上添加...[FromUri] 标记; 否则, 尝试从 HTTP 请求正文中读取, 相当于参数上添加 [FromBody] 标记。

    2.6K10

    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)

    为了从URI中获取值,Web API会查看路由数据和URI查询字符串。这个路由数据被填充是路由系统解析URI并匹配它到路由时候。...Using [FromUri]  为了更好让Web API从URI中读取复杂类型,添加【FormUri】属性到参数上。...意味着它将可以从URI中绑定GeoPoint参数。参数上你不需要添加FromUri】属性。 客户端可以调用这个方法,例如如下URI: http://localhost/api/values/?...例如,你可以添加一个规则:Get请求方法中任何ETag 参数使用ETagParameterBinding with if-none-match。...3、否则,使用我之前描述默认规则。     ①、如果参数类型是一个“简单”,或者拥有一个type converter,将会从URI进行绑定。它等价于参数上添加[FromUri]属性。

    1.4K30

    Spring Cloud Gateway 动态修改请求参数解决 # URL 编码错误传参问题

    最近很多接口,收到了错误参数,接口层报错是: class org.springframework.web.method.annotation.MethodArgumentTypeMismatchException...一个 URI 包括: 但是对于这些报错请求,我们发现,发送请求原始 URI 中, # 被错误 URL 编码了,变成了 %23,例如上面的请求,发到后端是: https://zhxhash...我们网关使用是 Spring Cloud Gateway,我们可以针对全局请求添加全局 Filter,动态修正 URI,解决这个问题,代码如下: @Log4j2 @Component public...,保证后续 Filter URI 是正确,以免有的 Filter 拿 Fragment 做文章。...如果我们只关心转发请求是正确,那我们只替换 URI 即可,即覆盖 getURI 方法

    1.4K30

    你知道@RequestMappingname属性有什么用吗?带你了解URI Builder模式(UriComponentsUriComponentsBuilder)【享学Spring MVC】

    更为重要是借此去了解学习Spring MVC非常重要URI Builder模式 @RequestMappingname属性 首先看此属性@RequestMapping中定义: @Target(...因为它既可以类上又可以方法上,因此一样它需要combine,但是它combine逻辑稍微特殊些,此处展示如下: RequestMappingInfo: // 此方法来自接口:RequestCondition...public static UriComponentsBuilder fromUri(URI uri) {...} // 比如这种:/hotels/42?...它原理是:fromUri(request.getURI())(调用上面方法fromUri) // 然后再调用本类adaptFromForwardedHeaders(request.getHeaders...Controller中,方法参数中可直接使用。

    3K30

    ASP.NET Web API编程——模型验证与绑定

    Register方法中将上述自定义过滤器添加进来,这样过滤器对每一个操作(Action)都起作用,如果不想使其对每一个操作都起作用,而是想应用于个别操作(Action),可以将此特性应用到目标操作(Action...] 为了强制Web API从URI中取值,可以使用FromUri特性。...默认值提供器从请求URI查询字符串和路由词典中获取值。要绑定参数名称保存在ModelBindingContext.ModelName属性中,模型绑定器词典中找相应键值对。...其默认实现完成以下工作: 1)参数中查找ParameterBindingAttribute,包括[FromBody], [FromUri], and [ModelBinder], 或者自定义特性。...2)如果步奏1)中没有找到,那么HttpConfiguration.ParameterBindingRules中寻找一个返回值为HttpParameterBinding方法

    3K50

    Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader2、Picasso3、Glide4、Fresco

    glide-transformations 处理各种图片显示效果,先看下面的图片。为什么着重推荐这个,因为如果是用是圆形ImageView或者特殊裁剪什么,那么很可能会有问题。 什么问题?...聪明你一定知道了,因为我要说Fresco,那么为什么不用Glide了呢?...挺好啊~这·····因为某次我要把通过图片URL拿本地缓存时候,我居然找不到同步获取方法(ノಠ益ಠ)ノ彡┻━┻,除了异步回调之外,我居然找不到····而且听说Fresco对GIF和webp支持更好...Resizing 来减少内存开销,如果有必要,还可以滑动时候做优化处理。...获取本地图片和下载图片方法 /** * @param uri * @param context * @param width * @param height * @param listener

    1.5K20

    WebAPI下的如何实现参数绑定

    本文将概述WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用那种绑定方式,文章最后将给出一些实际例子。...没有采用parameter binding 情况下,每个action方法将需要接收request message,并手动从中提取出参数,如下所示: public object MyAction(HttpRequestMessage...Using Formatters: Formatters(如MediaTypeFormatter类所示)实际上是包含额外元数据序列化程序。...以下这些基本原则决定了parameter是通过modelbinding还是formatter来读取: 如果参数未添加任何特性字段[attribute]标明,那么这将由参数.NET类型来决定具体采用何种方式...如果签名中有两个负责类型,至少其中一个必须添加[ModelBinder]特性标注。 以下是使得这些原则得以稳定并可预测关键设计。

    1.5K60

    Spring Cloud Zuul重试机制探秘

    (不记得同学可以回过头来再看下),这个方法返回是 RequestSpecificRetryHandler这个类,而且创建该类时,构造器前两个参数都为false。(这一点非常重要)。...我原本想法是这个请求被包装成Observable,如果这次请求因为超时出现异常或者其他异常,这样就会触发Observable重试机制(RxJava),但是事实并非如此,为什么呢?...原因就是上面的那两个参数,当出现了超时异常时候,触发重试机制之前会调用 RequestSpecificRetryHandler isRetriableException()方法,该方法作用是用来判断是否执行重试动作...怎么开启zuul重试机制 开启Zuul重试功能在原有的配置基础上需要额外进行以下设置: pom中添加spring-retry依赖(maven工程) 设置 zuul.retryable=true(...这里就会有人问,因为最外层是采用Hystrix,而Hystrix此时已经超时了,为什么还允许它内部继续使用spring-retry进行重试呢?

    4.3K100

    SpringCloudGateway笔记(6)-请求体不全

    本文链接:https://blog.csdn.net/yingziisme/article/details/94591049 实际使用遇到问题 – filter里面获取RequestBody不完整以及...LEAK MEMORY问题 第一种获取方式 在网上找到最常见一种获取RequestBody方式是 private String resolveBodyFromRequest(ServerHttpRequest...不完整 新版本SpringBoot 2.1.5.RELEAS +SpringCloud Greenwich.SR1中 获取不到RequestBody 完整测试代码如下 @Slf4j @Component...第二种获取方式 这种方式测试时候没有问题,但是进入生产环境会报 LEAK: ByteBuf. release () was not called before it’s garbage-collected...但是没找到这种方法怎么去释放buffer @Slf4j @Component public class RequestBodyFilter1 implements GlobalFilter, Ordered

    2.1K20

    CVE-2024-22262(CVE-2024-22259绕过)浅析

    受影响版本中,由于此前CVE-2024-22243、CVE-2024-22259修复不充分,攻击者特定场景下可构造绕过主机名验证,导致开放重定向或SSRF漏洞。...具体漏洞版本中,以org.springframework.web.util.UriComponentsBuilder#fromUriString方法为例,整个逻辑比较简单,主要是通过正则匹配URI中各个部分内容...除了host以外,修复时也考虑到了schema还有port匹配额外\问题,避免类似通过UriComponentsBuilder限制某个协议访问时,结合浏览器解析特性,引入额外\绕过问题。...对一些常见http请求组件进行了枚举,以okhttp3为例: 实际url解析时主要是通过okhttp3.HttpUrl构造方法进行封装,核心解析主要是parse方法parse方法中,首先获取对应索引信息...URI 中第一个出现:: 获取到对应协议后,会调用slashCount方法计算协议分隔符坐标: 查看slashCount具体实现,可以看到除了/以外,还考虑了反斜线\情况: 然后会计算componentDelimiterOffset

    3.3K10
    领券