我正在编写一个简单的Java Spring Boot测试应用程序来调用REST API。在这一点上的主要目的是快速得到一些工作,也帮助刷新我的记忆/知识从Java应用程序进行REST调用。
我过去使用过Spring Boot,也调用过REST api,但几年过去了,我再也不能访问我曾经参与编写的应用程序了。我已经忘记了很多细节。
到目前为止我写的是:
Application.java:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
TestController.java:
@RestController
public class TestController {
@Autowired
private RestTemplate template;
@GetMapping("/groups")
public Object[] getAllGroups(String url) {
Object[] groups = template.getForObject(url, Object[].class);
return groups;
}
}
我还没到试着运行这个的时候。我在网上找到的许多例子都没有详细说明如何"提供"URL。
我也不明白当RestTemplate
对象在方法中使用时,@GetMapping
中的资源路径/groups
如何映射到REST调用。注释中资源路径的目的是什么?它如何"合身"?使用模板调用?
我假设模板应该在@Service
中使用,而不是在控制器中使用,但我只是想让这个工作并理解它是如何工作的。
RestTemplate
对象之外,还有什么其他技术可以使其对应用程序可用?这可以在某种配置文件中完成吗?我已经忘记了这么多,很难找到一个例子来涵盖通常被掩盖的更精细的细节,如果不是完全遗漏的话。
你误解了@RestController
和RestTemplate
的目的。
用@RestController
和@GetMapping
注释类提供了一个REST接口,可以服务HTTP请求。
里面的实现getAllGroups
您通常会使用一个服务或一个存储库数据从一个数据库,并将它返回给客户做了HTTP请求。
RestTemplate
实例用于向其他服务器提供的其他REST接口发出HTTP请求。它通常不会在@RestController
的实现中使用,除非返回的一些信息来自其他微服务,例如
REST API URL是为调用你的REST API的客户端使用的,而不是在你的控制器中使用。