【问题标题】:Mapping rest post request to object将休息后请求映射到对象
【发布时间】:2020-03-17 16:18:52
【问题描述】:

我正在测试的应用程序的端点定义如下:

@ResponseBody
@RequestMapping(value = "maxsize", method = RequestMethod.POST)
public ResponseEntity<Void> changeMaxQuoteSize(@RequestBody DataRequest dataRequest,
                                               @AuthenticationPrincipal UserProfile userProfile) {

    orderManager.scheduleUpdateCurrencyConfigRules(dataRequest.getCurrency(),
            (c) -> c.setMaxQuoteSize(dataRequest.getMaxSize()))

    return ResponseEntity.status(HttpStatus.OK).build();
}

我想放心地向它发送消息,但我的问题是如何将请求正文映射到 DataRequest 对象?

我是这样试过的:

class DateRq {
    private String curpair;
    private Double maxQuoteSize;

    public DateRq(String curpair, Double maxQuoteSize) {
        this.curpair = curpair;
        this.maxQuoteSize = maxQuoteSize;
    }
}

@Test
public void test() {
    String endpoint = "http://127.0.0.1:8095/api/maxsize";

    DateRq request = new DateRq(TICKER_SYMBOL, 5_000_000D);

    Response response = RestAssured.given()
            .when()
            .body(request)
            .post(endpoint);

    assertEquals(200, response.getStatusCode());
}

但收到这样的错误: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 没有找到类 com...PMTest$DateRq 的序列化程序,也没有发现创建 BeanSerializer 的属性(为避免异常,请禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS) p>

我尝试了某种 JSON,但没有收到任何响应:

    @Test
public void test() {
    String endpoint = "http://127.0.0.1:8095/api/maxsize";

    String request = new JSONObject()
            .put("curpair", TICKER_SYMBOL)
            .put("maxQuoteSize", 5_000_000D)
            .toString();

    Response response = RestAssured.given()
            .when()
            .body(request)
            .post(endpoint);

    assertEquals(200, response.getStatusCode());
}

【问题讨论】:

    标签: java spring-boot rest rest-assured


    【解决方案1】:

    你试过这样的代码吗?

    DateRq request = new DateRq(TICKER_SYMBOL, 5_000_000D);
    
    Response response = RestAssured.given()
            .body(request)
            .when()
            .post(endpoint);
    

    【讨论】:

    • 不幸的是它什么也没改变
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多