RestController @requestbody всегда получает пустое pojo весной - PullRequest
0 голосов
/ 17 января 2020

У меня есть проблема, я хочу получить POJO в сообщении, но я всегда получаю пустой POJO

Вот мой интерфейс:

package com.test.api;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.server.ResponseStatusException;

import com.test.beans.LoginResponse;
import com.test.core.statistics.FGService;

import io.swagger.v3.oas.annotations.parameters.RequestBody;
//
@RequestMapping({"/key", "/key/"})
public interface KeyLoginAPI {


    @PostMapping(path = "newkey",consumes = "application/json",produces = "application/json")

    public LoginResponse generateKey( @RequestBody(required = true) LoginResponse login) throws ResponseStatusException;
}

Вот мой контроллер, как вернуть pojo:

package com.test.controller;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;

import com.test.api.KeyLoginAPI;
import com.test.beans.LoginResponse;
//import com.test.model.DlsLlaves;

@RestController
public class KeyLoginApiController implements KeyLoginAPI{

    @Override
    public LoginResponse generateKey(LoginResponse login) throws ResponseStatusException {

        return login;
    }

    private void authenticate(Integer providerid, String key) {


    }


}

А вот мой POJO, использующий lombok для геттеров и сеттеров:

package com.test.beans;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponse extends DefaultResponse{
    private String token;


}

, и мой запрос:

POST http://localhost:8080/key/newkey HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 81
Host: localhost:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

{
    "code": 1,
    "message": "message example",
    "token": "token example"
}

И это ответ:

HTTP/1.1 200 
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 17 Jan 2020 15:02:20 GMT

{"code":null,"message":null,"token":null}

Также я пытаюсь использовать Pojo без ломбок, а также не работает, и я не знаю, как это сделать, я надеюсь, что некоторые могут помочь мне

1 Ответ

0 голосов
/ 17 января 2020

Я опубликую это больше как комментарий, чем как ответ, так как мне нужно лучшее форматирование.

Ваш код немного неудобен для меня, не используйте интерфейс и используйте обычный класс с аннотациями , Кроме того, создайте новый объект для ответа.

Используйте этот код вместо:

@RestController
@RequestMapping("/key")
public class KeyLoginApiController {

    @PostMapping("/newkey")
    public LoginResponse generateKey(@RequestBody LoginResponse login)
        LoginResponse response = new LoginResponse();
        response.setMessage("something");
        return response;
    }
}

Как только вы подтвердите, что тело вашего запроса работает, продолжите тестирование, вернув login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...