Spring MVC 和 AngularJS @RequestMapping
Spring MVC and AngularJS @RequestMapping
我已经使用 Spring-boot 和 AngularJS
以及 REST
端点应用程序构建了一个应用程序。我制作的 Spring 控制器中的 @RequesMapping
有点卡住了。问题是,我有例子 url:
"localhost:8080/foo/bar/api/cardGenerated/0102".
'01'是第一个参数,'02'是第二个参数。我怎样才能映射到 @RequestMapping
Spring 控制器以获得上面的 url。
这是我的控制器:
@RestController
@RequestMapping("/api")
public class CardGeneratedResource {
@RequestMapping(value = "/cardGenerated/{branchCode}{cardType}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<CardGenerated> get(@PathVariable("branchCode") String branchCode,
@PathVariable("cardType") String cardType,
HttpServletResponse response) {
log.debug("REST request to get CardGenerated : " + branchCode + " and " + cardType);
CardGenerated cardGenerated = cardGeneratedRepository.
findTopByBranchCodeAndCardTypeOrderByCardNumberDesc(branchCode, cardType);
if (cardGenerated == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(cardGenerated, HttpStatus.OK);
}
}
所以这是我的 AngularJS $resource
:
'use strict';
angular.module('itmApp')
.factory('CardGenerated', function ($resource) {
return $resource('api/cardGenerated/:branchCode:cardType', {}, {
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
});
我总是 'Failed to load resource: the server responded with a status of 404 (Not Found)'
.
这里你少了 / .
你有两个路径变量here.so默认url是
localhost:8080/foo/bar/api/cardGenerated/FIRST_PATH_VARIABLE/SECOND_PATH_VARIABLE
- branchCode(第一个路径变量)
cardType(第二个路径变量)
@RequestMapping(value = "/cardGenerated/{branchCode}/{cardType}"
并且在前端注册工厂定义时也出现了同样的错误。
api/cardGenerated/:branchCode/:cardType'
所有方法都像
@RestController
@RequestMapping("/api")
public class CardGeneratedResource {
@RequestMapping(value = "/cardGenerated/{branchCode}/{cardType}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<CardGenerated> get(@PathVariable("branchCode") String branchCode,
@PathVariable("cardType") String cardType,
HttpServletResponse response) {
log.debug("REST request to get CardGenerated : " + branchCode + " and " + cardType);
CardGenerated cardGenerated = cardGeneratedRepository.
findTopByBranchCodeAndCardTypeOrderByCardNumberDesc(branchCode, cardType);
if (cardGenerated == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(cardGenerated, HttpStatus.OK);
}
}
和angular工厂就像
'use strict';
angular.module('itmApp')
.factory('CardGenerated', function ($resource) {
return $resource('api/cardGenerated/:branchCode/:cardType', {}, {
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
});
注意: 首先尝试使用任何 rest 客户端或邮递员,并确保后端 api 工作正常,angular 侧面检查参数也被正确传递.
我已经使用 Spring-boot 和 AngularJS
以及 REST
端点应用程序构建了一个应用程序。我制作的 Spring 控制器中的 @RequesMapping
有点卡住了。问题是,我有例子 url:
"localhost:8080/foo/bar/api/cardGenerated/0102".
'01'是第一个参数,'02'是第二个参数。我怎样才能映射到 @RequestMapping
Spring 控制器以获得上面的 url。
这是我的控制器:
@RestController
@RequestMapping("/api")
public class CardGeneratedResource {
@RequestMapping(value = "/cardGenerated/{branchCode}{cardType}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<CardGenerated> get(@PathVariable("branchCode") String branchCode,
@PathVariable("cardType") String cardType,
HttpServletResponse response) {
log.debug("REST request to get CardGenerated : " + branchCode + " and " + cardType);
CardGenerated cardGenerated = cardGeneratedRepository.
findTopByBranchCodeAndCardTypeOrderByCardNumberDesc(branchCode, cardType);
if (cardGenerated == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(cardGenerated, HttpStatus.OK);
}
}
所以这是我的 AngularJS $resource
:
'use strict';
angular.module('itmApp')
.factory('CardGenerated', function ($resource) {
return $resource('api/cardGenerated/:branchCode:cardType', {}, {
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
});
我总是 'Failed to load resource: the server responded with a status of 404 (Not Found)'
.
这里你少了 / .
你有两个路径变量here.so默认url是
localhost:8080/foo/bar/api/cardGenerated/FIRST_PATH_VARIABLE/SECOND_PATH_VARIABLE
- branchCode(第一个路径变量)
cardType(第二个路径变量)
@RequestMapping(value = "/cardGenerated/{branchCode}/{cardType}"
并且在前端注册工厂定义时也出现了同样的错误。
api/cardGenerated/:branchCode/:cardType'
所有方法都像
@RestController
@RequestMapping("/api")
public class CardGeneratedResource {
@RequestMapping(value = "/cardGenerated/{branchCode}/{cardType}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<CardGenerated> get(@PathVariable("branchCode") String branchCode,
@PathVariable("cardType") String cardType,
HttpServletResponse response) {
log.debug("REST request to get CardGenerated : " + branchCode + " and " + cardType);
CardGenerated cardGenerated = cardGeneratedRepository.
findTopByBranchCodeAndCardTypeOrderByCardNumberDesc(branchCode, cardType);
if (cardGenerated == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(cardGenerated, HttpStatus.OK);
}
}
和angular工厂就像
'use strict';
angular.module('itmApp')
.factory('CardGenerated', function ($resource) {
return $resource('api/cardGenerated/:branchCode/:cardType', {}, {
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
});
注意: 首先尝试使用任何 rest 客户端或邮递员,并确保后端 api 工作正常,angular 侧面检查参数也被正确传递.