gpt4 book ai didi

java - Post API 没有给出任何反应

转载 作者:行者123 更新时间:2023-12-02 11:52:00 27 4
gpt4 key购买 nike

我正在使用 JHipster(Java、Spring Boot、Angular)开发一个应用程序。我有类(class)和学生实体。学生登录后应点击注册按钮注册类(class)。我写了 post api 并从 swagger 测试了它。运行良好。但是当我尝试将它链接到带有 angular1; 的按钮时它给出任何反应。

我的 Post API(我从 swagger 测试它工作正常)

@PostMapping("/registercourse/{studentId}/{courseId}")
@Timed
public ResponseEntity<Void> registerCourse(@PathVariable Long studentId,@PathVariable Long courseId) {
log.debug("REST request to register {} Course : {} Student : {}", courseId,studentId);
courseRepository.registerCourse(studentId,courseId);
return ResponseEntity.ok().headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, courseId.toString())).build();
}

course.register.states.js

(function() {
'use strict';
angular
.module('mucsApp')
.config(stateConfig);

stateConfig.$inject = ['$stateProvider'];

function stateConfig($stateProvider) {
$stateProvider
.state('course.register', {
parent: 'entity',
url: '/registercourse/:studentid/:courseid',
data: {
authorities: ['ROLE_USER']
},
controller: function($scope, $stateParams) {
$scope.studentid = $stateParams.studentid;
$scope.courseid = $stateParams.courseid;
$http({
method: 'POST',
url: 'http://localhost:8080/' + $scope.studentid + '/' + $scope.courseid,
headers: {
'Content-Type': 'application/json'
}
}).then(function successCallback(response) {
console.log("GREAT");
}, function errorCallback(response) {
console.log(response)
});
}
});
}})();

course.register.service.js

(function() {
'use strict';
angular
.module('mucsApp')
.factory('CourseRegister', CourseRegister);

CourseRegister.$inject = ['$resource'];

function CourseRegister ($resource) {
var resourceUrl = 'api/registercourse/:studentid/:courseid';

return $resource(resourceUrl, {}, {
'query': { method: 'POST', isArray: true},
'save': {
method: 'POST',
transformRequest: function (data) {
var copy = angular.copy(data);
return angular.toJson(copy);
}
}
});
}})();

我的 html 按钮:

<button type="submit"
ui-sref="course.register({studentid:vm.mystudentid , courseid:course.id})"
class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-eye-open"></span>
<span class="hidden-sm-down">Kaydol</span>
</button>

最佳答案

你的 Spring Controller 正在寻找这个:

@PostMapping("/registercourse/{studentId}/{courseId}")

您的 $http 调用将发布到此:

url: 'http://localhost:8080/' + $scope.studentid + '/' + $scope.courseid

您需要将调用更改为:

url: 'http://localhost:8080/registercourse' + $scope.studentid + '/' + $scope.courseid

此外,您的 Controller 实际上并未使用您的CourseRegister。如果你想使用它,你需要将其注入(inject)到你的 AngularJS Controller 中。: controller: function($scope, $stateParams,CourseRegister).

我的两分钱是,在你的情况下,你最好只使用$http。我会将 [更新的] $http 调用放入您的 CourseRegister 服务中,并使用它。 $resource 需要的修改比我认为值得的更多。

有关 $resource 的更多信息是 here .

关于java - Post API 没有给出任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com