我已经在JavaSpringBoot中创建了Restendpoint。当我通过邮递员请求时,它会返回适当的响应。但当我使用react fetch时,若返回的是Json,它不会在浏览器中显示任何响应。
Spring启动控制器:
@RestController
@RequestMapping(path = "/v1/test")
@AllArgsConstructor(onConstructor_ = {@Autowired})
public class TestController {
...
}
下面的endpoint正在返回适当的响应。
@GetMapping(value = "/helloWorld", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public String getHelloWorld() {
return "Hello, World1!";
}
但当我尝试点击endpoint下方时,当我发出fetch
请求时,它返回null。但当我通过邮递员点击它时,它会返回适当的响应。
@GetMapping(value = "/testEndpoint", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public String returnTestResponse() {
HashMap<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("results", "value2");
return "{\"a\":1, \"b\":\"foo\"}";
}
还尝试返回POJO对象。但仍然没有回应。
@GetMapping(value = "/testModel", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public SearchResultsModel testModel() {
this.myService.getSearchResult();
}
响应提取调用:
await fetch(ALL_ARTICLES_ENDPOINT, {
mode: 'no-cors',
method: 'GET',
redirect: 'follow',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
}).then(response => {
console.log(response);
})
.then(data => {
console.log('Success:', data);
}).catch((error) => {
console.error('Error:', error);
});
问题是由于在获取请求中添加了模式:“no cors”
选项而导致的。这个选项帮助我摆脱了cors错误,但这意味着作为回报,我将无法在chrome中看到正文和标题。
为了解决这个问题,我删除了模式:“无cors”
,并在我的Spring Boot控制器上添加了@CrossOrigin
注释。
邮递员有两个隐藏的邮件头,这些邮件头与所有请求一起发送。选中“隐藏自动生成的标题”
react调用中缺少的是带有application/json
值的Accept
头
编辑:
刚才看到您将字符串作为json返回。您需要将它包装在POJO对象中,并在returnTestResponse类中返回它
第二次编辑:
这会奏效的。尝试实现您的POJO
@GetMapping(value = "/testEndpoint", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public YourObject returnTestResponse() {
HashMap<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("results", "value2");
return new YourObject(map);
}
我正在尝试使用开源用户管理服务,比如KeyClope。构建一个angularJs应用程序,该应用程序将向由KeyClope保护的RESTendpoint发送HTTP请求。我在后端使用spring boot。我能够调用endpoint并得到结果,这应该是不可能的,因为它会阻止来自未经授权来源的请求。 这是我遵循的两个链接 带角和Spring靴的钥匙斗篷 2.Github链接到KeyClope示例 由
我必须构建一个RESTendpoint,它在内部调用一些RESTendpoint(商业机密),并进行一些定制,并给出特定于用户的响应。我在spring boot框架内使用的endpoint(商业机密),支持HTTP和https。因为我的框架默认支持HTTP协议。 下面是endpoint示例: http://localhost:8081/hadoop-calendpoint控制器/getCustom
问题内容: 我在用JavaScript抓取API挣扎。当我尝试通过获取将某些内容发布到服务器时,请求正文为空数组。但是,当我使用Postman时,它可以工作…这是我在NodeJS中的服务器代码: 这是我的客户: 问题是在服务器端,req.body为空。有人能帮我吗?谢谢 ! 问题答案: 问题是 从文档中 … 防止该方法成为HEAD,GET或POST之外的任何其他内容, 并且 阻止 标头成为 简单标
我为此使用了一个服务类,但为了最小的可重复示例而删除了它。目前findAll()正在返回一个空数组,而它应该从h2返回一个带有员工实体json的数组。我仍然不清楚Spring如何将数据处理到h2数据库中,所以我想这可能是我的问题的根源。 控制器: 存储库: 实体: 数据sql: schema.sql:
我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:
按预期列出了这些组: 和按预期工作: 但是,和都返回和。 我想要的探测记录在自动配置的HealthIndicator列表中。 在https://spring.io/blog/2020/03/25/liveness-and-readid-probes-with-spring-boot中也介绍了该特性。 我尝试了的几个拼写,插入了(在博客文章中),但没有效果。 这里有一个相关的答案,但它并不直接解决我