Tôi đang làm theo hướng dẫn nghỉ ngơi về dữ liệu vào mùa xuân Accessing JPA Data with REST. Khi tôi http đăng một bản ghi mới, nó sẽ được chèn (và phản hồi là 201). Điều đó thật tuyệt, nhưng có cách nào để cấu hình mã REST MVC để trả về đối tượng mới được tạo ra không? Tôi không muốn gửi yêu cầu tìm kiếm để tìm phiên bản mới.Làm thế nào để cấu hình Spring Data REST để trả về biểu diễn của tài nguyên được tạo cho một yêu cầu POST?
Trả lời
Bạn không phải tìm kiếm đối tượng đã tạo. Khi thông số HTTP gợi ý, POST
yêu cầu trả về mã trạng thái là 201 Created
được cho là chứa tiêu đề Location
chứa URI của tài nguyên vừa tạo.
Vì vậy, tất cả những gì bạn cần làm là thực hiện yêu cầu GET
hiệu quả cho URI cụ thể đó. Spring Data REST cũng có hai phương thức trên RepositoryRestConfiguration.setReturnBodyOnCreate(…)
và ….setReturnBodyOnUpdate(…)
mà bạn có thể sử dụng để định cấu hình khuôn khổ để trả về ngay lập tức đại diện của tài nguyên vừa tạo.
Ví dụ với Spring Boot:
@Configuration
@EnableMongoRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
RepositoryRestConfiguration restConfiguration = ctx.getBean(RepositoryRestConfiguration.class);
restConfiguration.setReturnBodyOnCreate(true);
}
}
hoặc
@Configuration
@EnableMongoRepositories
@EnableAutoConfiguration
public class Application extends RepositoryRestMvcConfiguration {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
super.configureRepositoryRestConfiguration(config);
config.setReturnBodyOnCreate(true);
}
}
Good Luck!
configurationRepositoryRestConfiguration deprecated ... kể từ 2.4, triển khai RepositoryRestConfigurer.configureRepositoryRestConfiguration (RepositoryRestConfiguration) hoặc trực tiếp hoặc mở rộng RepositoryRestConfigurerAdapter và ghi đè phương thức. –
Đây là một biến thể sử dụng DI thay vì mở rộng RepositoryRestMvcConfiguration hoặc sử dụng ConfigurableApplicationContext.
@SpringBootApplication
@EnableConfigurationProperties
@Configuration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired private RepositoryRestConfiguration repositoryRestConfiguration;
@PostConstruct
public void exposeIds() {
this.repositoryRestConfiguration.setReturnBodyForPutAndPost(true);
}
}
là giải pháp thay thế nào tốt hơn, sau đó là giải pháp của Andrey, hay nó thực sự chỉ là một giải pháp thay thế? Tôi có nghĩa là, có bất kỳ lợi ích bằng cách sử dụng một trong hai người trong số họ? –
Nếu bạn đang sử dụng Spring Boot, bạn có thể thêm các dòng sau vào tập tin application.properties
của bạn cho POST
(tạo) và PUT
(cập nhật) tương ứng
spring.data.rest.return-body-on-create=true
spring.data.rest.return-body-on-update=true
- 1. Làm thế nào để loại bỏ các phần tử hypermedia khỏi các biểu diễn được tạo ra bởi Spring Data REST?
- 2. Làm thế nào để tùy chỉnh Spring Data REST để sử dụng một đường dẫn đa phân đoạn cho một tài nguyên kho lưu trữ?
- 3. Câu hỏi REST: PUT một biểu diễn, NHẬN một biểu diễn khác?
- 4. Nodejs POST yêu cầu multipart/form-data
- 5. Làm thế nào để tạo một Yêu cầu HTTP Python với dữ liệu POST và Cookie?
- 6. Trong REST, tôi có nên trả về biểu diễn để đáp ứng với PUT không?
- 7. Làm thế nào để thực hiện nhiều yêu cầu REST giao dịch/nguyên tử?
- 8. Ionic + Angular POST yêu cầu trạng thái trả về 404
- 9. Định cấu hình Spring Security để trả lại 403 cho URL REST và chuyển hướng để đăng nhập cho các URL khác
- 10. Biểu diễn JSON của tài nguyên REST có sử dụng URI cho các tài nguyên liên quan không?
- 11. Làm cách nào để định cấu hình IIS để chấp nhận yêu cầu POST?
- 12. Làm cách nào để nhận được JAX-RS @Path của một tài nguyên khác trong POST?
- 13. Làm thế nào để cấu hình Jackson ObjectMapper cho Camel trong Spring Boot
- 14. Làm cách nào để `gethostbyname` trả về` struct hostent * `mà không yêu cầu người gọi giải phóng tài nguyên?
- 15. Spring Boot Rest - Cách cấu hình 404 - không tìm thấy tài nguyên
- 16. Xem Yêu cầu dữ liệu biểu mẫu POST POST
- 17. Spring Data Rest/Spring Hateoas Custom Controller - PersistentEntityResourceAssembler
- 18. Cách tốt nhất trong REST api để yêu cầu đại diện tóm tắt của tài nguyên?
- 19. Cấu hình máy chủ tài nguyên riêng biệt Spring Oauth2
- 20. Làm thế nào để viết một cái nhìn Django cho một yêu cầu POST
- 21. Có được không bởi REST để trả lại nội dung sau POST?
- 22. Làm thế nào để yêu cầu python .post() thử lại?
- 23. Làm thế nào để POST yêu cầu sử dụng RestSharp
- 24. CodeIgniter Rest Server xử lý yêu cầu POST của JSON
- 25. REST api: yêu cầu nhiều tài nguyên trong một lần nhận
- 26. Làm thế nào để vô hiệu hóa cấu hình tự động spring-data-mongodb trong spring-boot
- 27. Làm cách nào để tạo yêu cầu POST nhiều biểu mẫu/dữ liệu biểu mẫu bằng Java?
- 28. Làm cách nào để áp dụng phép chiếu vào tài nguyên phương thức truy vấn REST dữ liệu Spring?
- 29. Làm thế nào để xử lý rỗng/null tải trọng yêu cầu trong Jersey REST của
- 30. Khung công tác Django REST: khi nào cần tạo tài nguyên siêu liên kết và khi tài nguyên lồng nhau? Làm thế nào để POST một tài nguyên lồng nhau?
Dựa trên câu hỏi này, tôi đã thực sự được cập nhật TẤT CẢ các hướng dẫn bắt đầu của REST dữ liệu Spring để bao gồm thông tin này, vì vậy bạn không cần phải đến đây để khám phá tính năng này. – gregturn
@ gregturn Tôi nghĩ đây chính là giải pháp mà tôi đang tìm kiếm. – chrylis
Tuyệt vời! Tôi nhớ đọc về nó nhưng khi tôi bắt đầu thử nghiệm tôi quên nơi để tìm. –