【发布时间】:2020-01-17 15:12:00
【问题描述】:
我有一个问题,我想在帖子中写一个 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) {
}
}
这是我使用 lombok 作为 getter 和 setter 的 POJO:
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}
我也尝试使用没有lombok的pojo,也不起作用,我不知道该怎么做,希望有人能帮助我
【问题讨论】:
-
为什么会有两个相同的映射
{"/key", "/key/"}。另外,可以试试@PostMapping(value = "newkey"...吗?注意value而不是path -
嗨@FedericoPiazza,我换了
@RequestMapping("key") and @PostMapping(value = "newkey"),但都不起作用 -
小心斜线。检查并使用这个
@RequestMapping("/key")和@PostMapping("/newkey") -
顺便说一句,在您的问题中,您说您的请求不起作用,但您的请求是……看来您的回答不是。您确定您的响应对象填充良好吗?
-
@FedericoPiazza 也尝试过,但它不起作用
标签: spring spring-boot