我使用Spring Boot创建了以下REST API。
@RestController
public class PersonController {
@Autowired
private PersonRepository PersonRepository;
@PostMapping(value="/Person", produces = "application/json")
public ResponseEntity<Person> addPerson(@RequestBody Person Person){
Person newPerson = PersonRepository.save(Person);
return new ResponseEntity<Person>(newPerson, HttpStatus.OK) ;
}
}
在Postman中,我选择:
发布
然后在body字段中放置以下json并点击send:
{"id":"", "name":"john", "age":"40", "email":"test@test.com"}
这是我得到的回报:
{
"name": "john",
"age": 40,
"email": "test@test.com",
"_links": {
"self": {
"href": "http://localhost:8080/person/10"
},
"person": {
"href": "http://localhost:8080/person/10"
}
}
}
但是,我希望json以其他格式返回:
{
"id": 10,
"name": "john",
"age": 40,
"email": "test@test.com"
}
如何做到这一点?
我刚刚发现了问题。
在控制器中,代码是:
@PostMapping(value="/person"....
在《邮差》中,我打电话给:
http://localhost:8080/persons
(结尾是字母s)
结果它从未进入控制器方法。
当我从邮递员通话中删除s时,它起到了作用,并以我想要的方式返回了json。
现在
有趣的是,当使用字母s调用时,它确实保存到db并返回json,即使映射不正确。
所以我决定在调试模式下运行(使用不正确的映射),并注意到它没有进入方法。
这很奇怪。它如何正确地保存和返回json?
然后我决定注释掉所有的方法,并再次调用postman。
它再次将json保存到db中,并以第一种格式返回json。
看来这是在幕后进行的,肯定不是用我创造的方法。
看起来您也在使用SpringDataRest,它会根据您的实体公开_links等。我猜SpringDataRest中的控制器是在您的请求中调用的,而不是您的自定义endpoint。尝试在您的控制器方法中记录一些内容以确保它确实被调用。如果您的服务的其他部分不需要SpringDataRest,您应该删除依赖项。
我正在使用的url-String newfullurl=“https://myappnametest.herokuapp.com/predict?{”+“”arr“”+“:[114.4756,31.57832,4.698017,1.834955,1.433942,1.388775,6.730856,12.19739,7.460399,4.807888,115.51131,69.19083,504.
我看过很多关于SO的类似问题,但没有一个回答我的问题。 我有一个文件,内容如下: 我想重新格式化php或html代码,无论是全局还是选择。 我已经尝试了所有的选项,但它不起作用。 CtrlShiftp, 如果我更改了,然后它就可以工作了。
点击按钮后,我尝试在< code>Text小部件中显示当前的< code>DateTime。下面的作品,但我想改变格式。 目前的做法 结果 问题 如何删除部分?
本文向大家介绍Springmvc如何返回xml及json格式数据,包括了Springmvc如何返回xml及json格式数据的使用技巧和注意事项,需要的朋友参考一下 问:@ResponseBody注解怎么指定返回xml 还是json 答:@RequestMapping 的produces 属性指定 produces = "application/xml" 或者 produces = "applica
问题内容: 在JavaScript中,从浮点数转换为字符串时,小数点后仅能获得2位数字吗?例如,用0.34代替0.3445434。 问题答案: var result = Math.round(original*100)/100; 具体细节,以防代码不言自明。 编辑:…或按照TimBüthe的建议使用。忘了那个,谢谢(和赞扬):)
问题内容: 我正在尝试从标准ISO 8601 格式更改为好的MMM d yyyy hh:mm z格式,但是我当前的代码失败。 我正在从api接收时间和日期。 问题答案: A 是“ ISO-8601日历系统中没有时区的日期,例如2007-12-03”,因此那里没有足够的信息。使用代替。 同样,吞噬这样的异常会使得排除故障变得更加困难。当您不打算处理异常时,要么根本不捕获它,要么捕获并重新包装在Run