gpt4 book ai didi

java - Angular 5 + Spring Boot post 方法不起作用

转载 作者:行者123 更新时间:2023-12-02 11:38:46 25 4
gpt4 key购买 nike

我使用 Angular 5 + Spring Boot。问题是我无法通过 post 方法将信息发送到我的休息 Controller 。我没有从客户端或服务器端收到任何错误。在代码下面,您将看到我制作的 get 方法可以正常工作。让我为我的英语道歉。

Spring 实体 { 菜 }

@Entity
@Table(name = "DISHES")
@Data
public class Dish implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Long id;

@Column(name = "NAME", unique = true)
@NotNull(message = "Ястието трябва да има име.")
@Size(min = 3, max = 30, message = "Името на ястието трябва да е между 3 и 30 символа.")
private String name;

@Column(name = "DESCRIPTION")
@NotNull(message = "Описанието на ястието не може да е празно.")
@Size(min = 3, max = 300, message = "Описанието на ястието трябва да е между 3 и 30 символа.")
private String description;

@JsonIgnore
@OneToMany(cascade = CascadeType.ALL ,mappedBy = "dish")
@JsonBackReference
private List<DishCounter> dishCounters;
}

Angular 实体{Dish}

export class Dish {

constructor(public id?: number, public name?: string, public description?: string) {

}
}

Spring 休息 Controller {Dish}

@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/dish")
public class DishRestController {

private static final Logger logger = LoggerFactory.getLogger(DishRestController.class);

private final DishService dishService;

@Autowired
public DishRestController(final DishService dishService) {
this.dishService = dishService;
}

@GetMapping("/all")
public ResponseEntity<List<Dish>> getAllDishes() {
logger.info("Rest controller find all dishes");
List<Dish> dishes = dishService.getAllDishes();

return ResponseEntity.status(HttpStatus.OK).body(dishes);
}

@PostMapping("/save")
public ResponseEntity<Void> saveDish(@RequestBody Dish dish) {
dishService.saveDish(dish);
return new ResponseEntity<>(HttpStatus.OK);
}
}

和 Angular post 方法

 save(dish: Dish): Observable<Dish> {
let result: Observable<Dish>;

result = this.http.post(this.saveDishUrl, dish)
.map((resp => {
console.log(resp);
return resp;
}))
.catch(e => {
console.log(e);
return Observable.throw(e);
});

console.log(result);

return result;
}

最佳答案

你在哪里调用 post 函数的 subscribe ?我在这里没有看到它。由于 http post 返回一个 observable,您必须订阅它才能进行调用。

http.post(....).subscribe(response => <DO SOMETHING WITH IT>);

关于java - Angular 5 + Spring Boot post 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730558/

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