gpt4 book ai didi

netflix-feign - 使用 netflix feign 设置静态(常量)POST 参数

转载 作者:行者123 更新时间:2023-12-04 03:16:00 56 4
gpt4 key购买 nike

我正在使用需要设置几个字段的 REST api。我的应用程序应始终将某些字段设置为相同的值。是否可以在带有 feign 定义(或其他地方)的界面中使这些值“硬编码”?

我的假声明看起来像这个例子。假设我总是想使用此应用程序中的相同代理。那可行吗?

@RequestLine("POST /files")
@Headers("Content-Type: application/json")
default FileMetadata addFile(@Param("file_name") String fileName,
@Param("agent") String agent,
@Param("md5") String md5,
@Param("file_type") String fileType) {
return new FileMetadata.Builder().build();
}

最佳答案

您有不同的选择,如果您使用的是 Spring Annotations,您可以使用 defaultValue 注释属性来确定默认值

@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,则可以使用注释 @Body 来完成:
@RequestLine("POST /files")
@Body("%7B\"file_name\": \"{user_name}\", \"agent\": \"" + DEFAULT_VALUE_AGENT +"\"%7D") //... other params..
....

编辑

基于 Github 存储库 documentation ,如果您使用的是 Java 8,则可以执行一个默认方法,该方法使用 param 常量调用另一个方法。就像下一个
@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 。

关于netflix-feign - 使用 netflix feign 设置静态(常量)POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40887980/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com