我无法找到在$ http请求中使用的正确路径,以便在我的Spring Boot应用程序中访问@RestController。我将在下面包含相关代码,希望您能看到一些我不是的东西。抱歉,该代码不是完全用英语编写的,但是我认为这很容易理解。
这是我应该定位的后端rest控制器:
@RestController
@RequestMapping("/fileData")
public class FileDataService {
@Autowired
HttpServletRequest request;
@Autowired
ServletContext ctx;
@RequestMapping(method = RequestMethod.GET,
value = "fileData/getKorisnici",
produces = MediaType.APPLICATION_JSON_VALUE)
//@ResponseBody
public Collection<Korisnik> getKorisnici() {
return getFileData().getKorisnikValues();
}
/*@POST
@Path("/addKorisnik")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)*/
@SuppressWarnings("rawtypes")
@RequestMapping(method = RequestMethod.POST,
value = "/addKorisnik",
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
//@ResponseBody
public ResponseEntity addKorisnik(Korisnik k) {
if(getFileData().usernameExistsKorisnici(k.getKorisnickoIme())) {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
else if(getFileData().emailExistsKorisnici(k.getEmail())) {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
getFileData().getKorisnici().put(k.getIdKorisnik(), k);
getFileData().writeData();
return ResponseEntity.ok().build();
}
这是前端:
app.factory('korisnikFactory', function($http) {
var factory = {};
factory.getKorisnici = function() {
//return $http.get('/drools-spring-v02-app/rest/fileData/getKorisnici');
return $http.get('/fileData/getKorisnici');
};
factory.addKorisnik = function(korisnik) {
return $http.post('/fileData/addKorisnik', korisnik);
};
return factory;
});
答案 0 :(得分:1)
我相信您的相对网址在这里可能是错误的。首先,尝试获取您的Spring Boot应用程序的完整路径,并尝试使用RestClient或Postman来查看Spring Boot应用程序对于GET和POST请求是否都能正常工作。完成此步骤后,返回Angular尝试$ http.get([your-full-url'),如果可以解决问题,则可以更新相对URL。
答案 1 :(得分:1)
在您的springboot应用程序中,在类@RequestMapping("/fileData")
上方定义了一个注释FileDataService
,因此每个请求调用都会自动以/fileData/..
为前缀。无需像在get呼叫中那样再次编写
@RequestMapping(method = RequestMethod.GET,
value = "fileData/getKorisnici",
produces = MediaType.APPLICATION_JSON_VALUE)
在AngularJS中应该有绝对路径return $http.get($location.absUrl() + 'fileData/getKorisnici');
(注意那些斜线)
您可以在SpringBoot + AngularJS here
上引用我的一个演示项目。答案 2 :(得分:1)
您在URL格式方面犯了一个小错误,在您的类中,您已经声明了@RequestMapping("/fileData")
,因此您的方法应遵循此方法之前的路径。
您不应再包含value = "fileData/getKorisnici"
。
只需尝试将其更正为value = "/getKorisnici"
,一切都会正常。
前端没有任何改变。