您有不同的选择,如果您使用 Spring Annotations,您可以使用defaultValue
annotation 属性来确定默认值
@RequestParam(value = "agent", required = false, defaultValue = "AnyAgent") String agent
但是如果您使用的是 netflix-feign 注释,并且似乎这就是您正在做的,您需要在路径中添加,即在@RequestLine
注释中:
static final String DEFAULT_VALUE_AGENT = "agent";
@RequestLine("POST /files?agent=" + DEFAULT_VALUE_AGENT)
....
但是如果你指的是 Body POST,你可以使用 annotation 来做到这一点@Body
:
@RequestLine("POST /files")
@Body("%7B\"file_name\": \"{user_name}\", \"agent\": \"" + DEFAULT_VALUE_AGENT +"\"%7D") //... other params..
....
编辑
根据 Github 存储库文档,如果您使用的是 Java 8,则可以执行一个默认方法,该方法使用参数常量调用另一个方法。就像下一个
@RequestLine("POST /files")
@Headers("Content-Type: application/json")
FileMetadata addFile(@Param("file_name") String fileName,
@Param("agent") String agent,
@Param("md5") String md5,
@Param("file_type") String fileType);
@RequestLine("POST /files")
@Headers("Content-Type: application/json")
default FileMetadata addFileConstant(@Param("file_name") String fileName,
@Param("md5") String md5,
@Param("file_type") String fileType) {
addFile(fileName, "constant_value", md5, fileType);
}
就个人而言,我认为比我之前提出的其他选项更灵活。如果它们是参数,这个想法也适用于 POST Body。