当前位置: 首页 > 知识库问答 >
问题:

@主体中的QueryMap传递参数

宣瀚
2023-03-14

我有一个简单的POJO:

class FilterDTO(
    open var page: Int = 0,
    open var size: Int = 20
)

和一个简单的假冒客户端:

@FeignClient(name = "feign-client", url = "\${feign.url.client}")
interface FeignClient{

    @GetMapping("get/{id}")
    fun getById(@PathVariable("id") id: String, @QueryMap(encoded = true) filter: FilterDTO): Any

}

根据拉动请求#667,我期望这被翻译为:

---> GET http://my.service.com/get/123?page=0&size=20 HTTP/1.1
Content-Length: 64
Content-Type: application/json

---> END HTTP (64-byte body)
<--- HTTP/1.1 200 Ok (807ms)
allow: GET

// ...

{"response": "foo"}
<--- END HTTP (108-byte body)

但我得到的是:

---> GET http://my.service.com/get/123 HTTP/1.1
Content-Length: 64
Content-Type: application/json

{"page":0,"size":2}
---> END HTTP (64-byte body)
<--- HTTP/1.1 405 Method Not Allowed (807ms)
allow: GET
cache-control: no-cache, no-store, max-age=0, must-revalidate
//..

{"timestamp":1628783721302,"status":405,"error":"Method Not Allowed","path":"/get/123"}
<--- END HTTP (108-byte body)

请注意,@QueryMap参数在请求主体中传递,而不是作为queryString传递。

它试图调用的endpoint定义为:

    @GetMapping("/get/{id}")
    fun getById(
            @PathVariable("id")
            id: String,
            filter: FilterDTO
    )

我错过了什么?如何使用@QueryMap将其作为查询参数传递?

共有1个答案

顾学真
2023-03-14

发现使用spring cloud openfeign我应该使用@SpringQueryMap而不是文档中所述的@QueryMap

 类似资料:
  • 您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof

  • 尽管应用中的大部分组件都依赖其他组件,但并不总是如此。同时 Windsor 用来查找满足依赖的正确组件的默认规则有时不得不进行调整。 如何做到这一点基于值的来源和获取值的地方。 Composition root - container.Resolve container.Resolve 方法有几个重载允许传递 IDictionary 作为参数(在这种情况下,建议使用 [Arguments] 类),

  • 就前面所讲,函数的基本内容已经完毕。但是,函数还有很多值得不断玩味的细节。这里进行阐述。 参数的传递 python中函数的参数通过赋值的方式来传递引用对象。下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def foo(p1,p2,p3,...) 这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备注意的是,参数的名字不重

  • 我需要在Spark SQL中传递参数。例如,下面的查询是Val timestamp=spark。sql(“从表中选择时间戳”)现在,我有另一个查询要在where类Spark中传递这个时间戳。sql(s“从表B中选择col1,其中timestamp='$timestamp'”。 但是上面的查询返回不匹配的表达式错误。有人能提出解决方案吗

  • 我需要将一个json字符串作为值传递给POST请求正文的一个参数。我的请求正文如下所示: 对于参数3,我需要以json格式传递一个字符串值。json文件位于我的本地系统中,是一个巨大的文件,所以如果我可以将其作为jmeter变量传递,这是有意义的。我尝试了以下方法: 添加JSR223预处理器后,代码如下: 但我得到以下错误: 有人能帮我解决这个问题吗?

  • 问题内容: 如何将参数传递给javafx中的辅助窗口?有没有办法与相应的控制器通信? 例如:用户从中选择一个客户,TableView然后会打开一个新窗口,显示该客户的信息。 newStage将是新窗口。问题是,我找不到告诉控制器在哪里寻找客户信息的方法(通过将id作为参数传递)。 有任何想法吗? 问题答案: 推荐方法 该答案列举了将参数传递给FXML控制器的不同机制。 对于小型应用程序,我强烈建议