我有两个独立的项目,一个projectapi(spring后端)和一个projectui(angular front)。我使用maven资源插件将它们组合到一个jar中进行生产。当我启动spring服务器时,这两个模块之间的连接工作正常。
现在我想自定义后端url路径,以便http://localhost:8088/登录“看起来像”http://localhost:8088/api/v1/login'。
通过在application.properties中添加以下条目,我可以做到这一点: spring.mvc.servlet-path=/api/v1
以及修改从ui到api的调用的基本url。
因为这个改变,我在调用ui时遇到了一个白标签错误(localhost:8088). 经过一番探索,我试图实现 WebMvcConfigurer
但这对我不起作用。这是参考stackoverflow链接。
// Application.java
@SpringBootApplication
@EnableJpaRepositories
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
// UserRestService.java
@RestController
@RequestMapping("/user")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class UserRestService extends AbstractRestService {
...
@PostMapping("/login")
public String login(@RequestBody User user) throws CustomException {
return Response.ok(userService.loginUser(user, response));
}
}
// application.properties
server.port=8088
// without that entry the post request works fine -> localhost:8088/user/login
// adding that entry and trying to call: localhost:8088/api/v1/user/login i get whitelabel error
spring.mvc.servlet.path=/api/v1
2条答案
按热度按时间ghg1uchk1#
尝试将“/api/v1/”添加到控制器中,否则所有控制器都将以该路径作为前缀,并且您将无法提供具有相同应用程序的其他版本。
1bqhqjot2#
我更喜欢编程到一个接口。这有助于更好地利用国际奥委会。向接口添加uri前缀(/api/v1/),如下所示。它将把这个前缀附加到接口提供的所有方法上。