Angularjs Spring Boot web应用程序中的角度路由
我正在开发一些使用角度和弹簧靴的项目,我遇到了一些令人困惑的情况: 我有Spring控制器与我的应用程序共享视图文件名Angularjs Spring Boot web应用程序中的角度路由,angularjs,spring-boot,angularjs-routing,Angularjs,Spring Boot,Angularjs Routing,我正在开发一些使用角度和弹簧靴的项目,我遇到了一些令人困惑的情况: 我有Spring控制器与我的应用程序共享视图文件名 @Controller public class OfferViewController { @RequestMapping(value = "/addOffer", method = RequestMethod.GET) public String addView() { return "html/offer/addOffer"; }
@Controller
public class OfferViewController {
@RequestMapping(value = "/addOffer", method = RequestMethod.GET)
public String addView() {
return "html/offer/addOffer";
}
@RequestMapping(value = "/showOffer/{offerId}")
public String showOffer(@PathVariable("offerId") String offerId){
return "html/offer/showOffer";
}
}
我还有其他一些控制器来处理REST调用:
@RestController
public class OfferRestController {
private OfferRepository offerRepository;
@Autowired
public OfferRestController(OfferRepository offerRepository) {
this.offerRepository = offerRepository;
}
@RequestMapping(value = "/showOfferJson/{offerId}", method = GET, produces = APPLICATION_JSON_VALUE)
public Offer showOffertest(@PathVariable("offerId") String offerId) {
Offer offer = offerRepository.findOne(offerId);
return offer;
}
@RequestMapping(value = "/saveOffer", method = POST)
public ResponseEntity<Offer> saveOffer(@RequestBody Offer offer) {
Offer offerSaved = offerRepository.save(offer);
return new ResponseEntity<Offer>(offerSaved, HttpStatus.OK);
}
}
@RestController
公共类报价控制器{
私人要约收购;
@自动连线
公开要约控制人(要约人要约人){
this.offerepository=offerepository;
}
@RequestMapping(value=“/showOfferJson/{offerId}”,method=GET,products=APPLICATION\u JSON\u value)
公开发售showOffertest(@PathVariable(“offerId”)字符串offerId){
Offer Offer=offerepository.findOne(offerId);
还盘;
}
@请求映射(value=“/saveOffer”,method=POST)
公共响应性saveOffer(@RequestBody Offer){
Offer offerSaved=offerepository.save(Offer);
返回新的响应状态(offerSaved,HttpStatus.OK);
}
}
我使用angular来开发我的UI
当我开始阅读angular(单页应用程序)中的路由可能性时,我发现自己很困惑,因为我认为我不再需要OfferViewController了
我的问题是:
谢谢你的帮助 让我们从以下内容开始:什么是单页应用程序? 单页应用程序是由一个HTML页面组成的页面。因此,只有一个HTML文件从后端请求,其余的路由应该由前端管理。 对于单页应用程序的更详细的示例,我确信在web上有很多关于这方面的信息 AngularJS的路由是如何工作的? 到不同路线的角度路径位于“#”之后。因此,它们位于url的片段部分,而这部分不会传输到服务器。因此,没有必要在后端使用@Controller来服务不同的html 要根据当前路由显示不同的内容,可以指定控制器和partial.html文件,这些文件应显示在所需的路由上
phonecatApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/phones', {
templateUrl: 'partials/phone-list.html',
controller: 'PhoneListCtrl'
}).
when('/phones/:phoneId', {
templateUrl: 'partials/phone-detail.html',
controller: 'PhoneDetailCtrl'
}).
otherwise({
redirectTo: '/phones'
});
}]);
这个代码示例是最新的。它显示了如何指定路由以及应在此路由上显示哪些内容
此代码段告诉angular将部分HTML文件包含到使用ng view
指令的每个元素中
所以你的index.html看起来像这样(同样是从
如果您访问yourdomain.com/#/phones
现在它会加载index.html,并将文件“/partials/phone list.html”中包含的html包含到使用ng view
-指令的div中
什么是休息?
我想没有人知道这个问题的确切答案,但你所做的绝对不是休息。这只是HTTP调用。您的端点看起来像RPC。
第一步可以是使用接受GET请求的endpoint/offers/{id}和接受POST请求的endpoint/offers。如果您想提供一种方法,一次公开所有服务,请添加一个端点/服务,该端点/服务接受GET请求。您不需要像现在这样处理路由。但是,如果这个控制器允许HTML5路由,通过对每个请求(CSS、JS、图像等静态文件除外)的登录页进行响应,那就更好了。我希望我回答了你所有的问题。如果你有更多的问题,请在回答下发表评论。请参考“谢谢你的回复”,并突出说明它应该如何工作。如果你有时间,请看我的另一个问题,我会看一看。如果你的项目可以在github上使用,那么很高兴能获得它的链接,这样我就可以让它工作,并将它作为我的示例之一上传到我的github帐户上(简化为基本内容,以演示带有spring boot后端的angularJS应用程序)。。但是很好的解释
<!doctype html>
<html lang="en" ng-app="phonecatApp">
<head>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
</head>
<body>
<div ng-view></div>
</body>
</html>