Java Spring控制器-HashMap返回
我有一个非常基本的REST控制器Java Spring控制器-HashMap返回,java,spring,Java,Spring,我有一个非常基本的REST控制器 @RestController @CrossOrigin(origins = "*") @RequestMapping(value = "/signKey", produces = "application/json") public class SignKeyController { @Autowired private SignKeyService signKeyService; @GetMapping(value = "/generate") publ
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {
@Autowired
private SignKeyService signKeyService;
@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
String signKeyToken = signKeyService.generateNewToken();
Map<String, String> data = new HashMap<>();
data.put("signKey", signKeyToken);
return new ResponseEntity<>(data, HttpStatus.OK);
}
但是因为我想将一个json对象返回到前端,而不仅仅是一个字符串,所以我创建了一个hashmap。
这个代码很好用,但我觉得应该有更好的方法
在这种情况下,我不想创建模型或任何东西。这是一个简单的字符串返回。我真的需要继续在我的控制器中创建HashMaps,它只返回一些不在任何模型中的数据吗
有什么帮助吗?你可以按需要做
String signKeyToken = signKeyService.generateNewToken();
DataObj data = new DataObj(signKeyToken);
return new ResponseEntity<>(data, HttpStatus.OK);
class DataObj {
private String signKey;
//setter,getter,constructor
}
String signKeyToken=signKeyService.generateNewToken();
DataObj数据=新的DataObj(signKeyToken);
返回新的响应属性(数据,HttpStatus.OK);
类DataObj{
私有字符串签名密钥;
//setter、getter、构造函数
}
如果这有帮助,
可以使用来放置值,而不是模型类
示例-
import org.json.simple.JSONObject;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {
@Autowired
private SignKeyService signKeyService;
@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
String signKeyToken = signKeyService.generateNewToken();
JSONObject data = new JSONObject();
data.put("signKey", signKeyToken);
return new ResponseEntity<>(data, HttpStatus.OK);
}
}
import org.json.simple.JSONObject;
@RestController
@交叉原点(原点=“*”)
@RequestMapping(value=“/signKey”,products=“application/json”)
公共类签名密钥控制器{
@自动连线
私有SignKeyService SignKeyService;
@GetMapping(value=“/generate”)
公共响应生成密钥(){
字符串signKeyToken=signKeyService.generateNewToken();
JSONObject数据=新的JSONObject();
data.put(“signKey”,signKeyToken);
返回新的响应属性(数据,HttpStatus.OK);
}
}
编辑:这里是使用的链接您所说的更好的方式是什么意思?对我来说这似乎很好,如果这个模型只针对这个控制器存在,您不需要特定的模型,但最好为序列化过程保留一些数据结构。您仍然可以编写更短的
返回新的ResponseEntity(Collections.singletonMap(“signKey”,signKeyService.generateNewToken()),HttpStatus.OK)代码>是的,它看起来很好,并且可以使用return ResponseEntity添加到最短的内容中。好的(Collections.singletonMap(“signKey”,signKeyService.generateNewToken())在我看来很好。OP不喜欢定义数据模型:-)
import org.json.simple.JSONObject;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {
@Autowired
private SignKeyService signKeyService;
@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
String signKeyToken = signKeyService.generateNewToken();
JSONObject data = new JSONObject();
data.put("signKey", signKeyToken);
return new ResponseEntity<>(data, HttpStatus.OK);
}
}