【问题标题】:Spring RestController handle Get Request with Body valuesSpring RestController 处理带有正文值的获取请求
【发布时间】:2018-02-12 22:55:22
【问题描述】:

我目前正在开发一个实验原型,想询问是否有办法在获取请求中接受响应正文。

@RequestMapping(method=RequestMethod.GET, path="/stair/shippingorders", produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<?> getShippingOrder(@RequestBody JsonNode request) throws JsonProcessingException, IOException{
    log.info("get body: " + request);

    // do stuff
    return ResponseEntity.ok(response);
}

测试应该是这样的

@Test
public void shouldAcceptRequestBodyinGetRequest() {

    JSONObject body = new JSONObject();
    body.appendField("stuff", "{}");
    HttpEntity<JSONObject> entity = new HttpEntity<JSONObject>(body);

    ResponseEntity<String> result = restTemplate.exchange(GET_URL,HttpMethod.GET, entity, String.class );

    assertNotNull(result);
}

【问题讨论】:

  • 为什么要在请求映射中使用响应正文?
  • 我有几个松散连接(REST)的微服务。他们根据请求的内容将请求及其内容发送到其他微服务(自治)。以及输出。所以一个微服务改变了内容并且取决于(例如状态“付费”)它被发送到一个不同的服务,其中包括一些其他嵌入式资源用于响应......使用POST它工作正常但是我必须包括像资源ID这样的东西作为获取参数。这只是一个原型实现......所以我可以放弃代码系统的控制流

标签: spring spring-mvc spring-boot spring-data


【解决方案1】:

GET 方法不支持正文,因此无法将正文作为请求的一部分发送。通常的做法是使用 POST 代替

【讨论】:

    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2019-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多