我将使用哪些 Spring 注释将 GET 和 POST 变量混合为同一方法的参数?

What Spring annotations would I use to mix GET and POST variables as arguments on the same method?

我有一个看起来像这样的方法:

@RestController
@org.springframework.context.annotation.Scope("request")
@RequestMapping(value = "/path/to", produces = "application/json; charset=utf-8")
public class MyController {

    Thing thing;

    @RequestMapping("/myMethod")
    @ResponseBody
    public String myMethod(
                @RequestParam(value="storeIds", required=false) List<String> storeIds,
                @RequestParam(value="startDate") Date startDate,
                @RequestParam(value="endDate") Date endDate
    ) throws Exception {
        JSONObject json = thing.getJson(startDate, endDate, storeIds);
        return json.toString();
    }

}

如您所见,现在它接受三个参数,它们都作为 GET 变量传入。我想要做的是让 startDate 和 endDate 参数仍然作为 GET 变量出现,但 storeIds 参数作为 POST 变量出现。我担心如果我只是将 @RequestMapping 注释更改为 POST 方法,那么它将期望所有三个参数都是 POST 变量。

有什么方法可以实现我的要求吗?

GET 请求和 POST 请求之间的区别,除了 "getting" 与 "posting" 的隐含语义(以及相关的可能后果缓存、重新加载等),只是 POST 请求有 body,而 GET 请求没有。 (即使有 POST 请求,body 也可以为空:zero-length body 是有效的。)这意味着 GET 请求可以 only 通过 URL 获取参数,而 POST 请求可以通过 URL either 通过body(或者一些通过一个,一些通过另一个)。

从上面的评论中,我了解到您使用术语 "GET variable" 来表示 URL 参数,即使在 POST 请求中也是如此;但实际情况是 URL 参数适用于两种请求方法。