检查这两种控制器方法。他们都使用相同的对象。第一个名为backtestStrategy正确地返回一个JSON格式的响应。第二个名为getAllStrategies的值返回一个不是JSON格式的值数组。所有的值都在那里,但没有一个键。
@RestController
@RequestMapping("/api/v1")
public class StrategyController {
@Autowired
private StrategyService strategyService;
@GetMapping("/backtest")
public Response backtestStrategy(@RequestParam String strategyName, @RequestParam String symbol) {
Response response = strategyService.backtestStrategy(strategyName,symbol);
return response;
}
@GetMapping("/strategies")
public List<Response> getAllStrategies() {
List<Response> strategies = strategyService.getAllStrategies();
return strategies;
}
}有什么建议吗?
编辑:第一个显然是有效的,因为我创建了响应对象,填充它,将它保存到数据库中,并返回创建的对象。第二个是从数据库中读取数据。这些值在db中是正确的。
下面是操作顺序:控制器调用由接口定义的服务实现。服务实现调用存储库,这使得db查询。以下是查询:
@Query(value="select * from strategy", nativeQuery = true)
List<Response> getAllStrategies();发布于 2020-12-06 19:09:25
您可以使用以下示例获得所需的响应:
Pojo.java
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class Pojo {
private String name;
}DemoRestController.java
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/api/v1")
public class DemoRestController {
@GetMapping("/single")
public ResponseEntity<Pojo> single() {
return ResponseEntity.ok(new Pojo("one"));
}
@GetMapping("/multiple")
public ResponseEntity<List<Pojo>> multiple() {
return ResponseEntity.ok(Arrays.asList(new Pojo("one"), new Pojo("two")));
}
}输出-单
{
"name": "one"
}输出-多
[
{
"name": "one"
},
{
"name": "two"
}
]https://stackoverflow.com/questions/65171828
复制相似问题