Yaylı veri istirahat kılavuzunu Accessing JPA Data with REST takip ediyorum. Yeni bir kayıt yayınladığımda, eklenir (ve yanıt 201). Bu harika, ancak yeni oluşturulan nesneyi döndürmek için REST MVC kodunu yapılandırmanın bir yolu var mı? Yeni örneği bulmak için bir arama isteği göndermek zorunda kalmamayı tercih ederim.Bir POST isteği için oluşturulan kaynağın temsilini döndürmek için Yay Verisi Sırası nasıl yapılandırılır?
cevap
Oluşturulan varlığı aramak zorunda değilsiniz. HTTP özelliklerinin önerdiği gibi, 201 Created
durum kodu döndüren POST
isteklerinin, yaratılan kaynağın URI'sini içeren bir Location
başlık içermesi gerekir.
Böylece yapmanız gereken tek şey, söz konusu URI'ye GET
isteğini etkili bir şekilde vermek. Spring Data REST'in ayrıca, RepositoryRestConfiguration.setReturnBodyOnCreate(…)
ve ….setReturnBodyOnUpdate(…)
'da iki yöntemi vardır; bu çerçeveyi, oluşturulan kaynağın temsilini hemen döndürmek üzere yapılandırmak için kullanabilirsiniz. Bahar Boot ile
Örnek:
@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);
}
}
veya
@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);
}
}
İyi Şanslar!
configureRepositoryRestConfiguration, 2.4 sürümünden beri, RepositoryRestConfigurer.configureRepositoryRestConfiguration (RepositoryRestConfiguration) yöntemini doğrudan doğruya veya RepositoryRestConfigurerAdapter öğesini uygulayıp yöntemi geçersiz kılar. –
Burada RepositoryRestMvcConfiguration veya ConfigurableApplicationContext kullanarak genişletmek yerine DI kullanan başka bir varyant. Bahar Önyükleme kullanıyorsanız
@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);
}
}
bu alternatif, daha sonra, daha iyi bir çözüm ya da gerçekten sadece bir alternatif mi? Demek istediğim, herhangi birini kullanarak kazanç var mı? –
, bu soruya dayanarak sırasıyla POST
(oluştur) ve PUT
(güncelleme)
spring.data.rest.return-body-on-create=true
spring.data.rest.return-body-on-update=true
için
application.properties
dosyasına aşağıdaki satırları ekleyebilirsiniz, ben aslında güncelledik Spring Data REST'in başlaması, bu bilgileri içerecek şekilde kılavuzluk eder, böylece bu özelliği keşfetmek için buraya gelmeniz gerekmez. – gregturn@gregturn Bence bu tam olarak aradığım çözüm. – chrylis
Mükemmel! Bunu okumayı hatırlıyorum ama testlere başladığımda nereye bakacağımı unuttum. –