使用该注解定义的请求头可以为空,当为空时,会自动忽略,当传入一个 List 或 array 时,为拼接每个非空的 item 的值到请求头中
具有相同名称的请求头不会相互覆盖,而是会照样添加到请求头中
2
Headers
作用于方法,用于添加一个或多个请求头
具有相同名称的请求头不会互相覆盖,而是照样添加到请求头中
3
Tag
5.5 注意事项
以上部分注解真正的实现在 ParameterHandler 类中,每个注解的真正实现都是 ParameterHandler 类中的一个 final 类型的内部类,每个内部类都对各个注解的使用要求做了限制,比如参数是否为空,键和值是否为空等。
FromUrlEncoded 注解和 Multipart 注解不能同时使用,否则会抛出 methodError(“Only one encoding annotation is allowed”),可在 ServiceMethod 类中 parseMethodAnnotation() 方法中找到不能同时使用的具体原因。
Path 注解与 Url 注解不同时使用,否则会抛出 parameterError(p, “@Path parameters may not be used with @Url”),可在 ServiceMethod 类中找到不能同时使用的具体代码,其实原因也很好理解,Path 注解用于替换 url 路径中的参数,这就要求在使用 path 注解时,必须已经存在请求路径,不然没法替换路径中指定的参数,而 Url 注解是在参数中指定的请求路径的,这个时候指定请求路径已经晚了,path 注解找不到请求路径,更别提更换请求路径中的参数了。
对于 FieldMap、HeaderMap、PartMap、QueryMap 这四种作用于方法的注解,其参数类型必须为 Map 的实例,且 key 的类型必须为 String 类型,否则会抛出异常,以 PartMap 注解为例,会抛出 parameterError(p, “@PartMap keys must be of type String:” + keyType)
使用 Body 注解的参数不能使用 form 或 multi-part 编码,即如果为方法使用了 FormUrlEncoded 或 Multipart 注解,则方法的参数中不能使用 Body 注解,否则会抛出异常 parameterError(p, “@Body parameters cannot be used with form or multi-part encoding”)