如何使用Spring Data Rest删除实体?
这是我的存储库:
package br.com.qrbibliokode.repositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import br.com.qrbibliokode.entities.LivroEntity;
@RepositoryRestResource(collectionResourceRel = "livro", path = "livro")
public interface LivroRepository extends CrudRepository<LivroEntity, Long> {
LivroEntity findById(@Param("id") Long id);
LivroEntity findByTitulo(@Param("titulo") String titulo);
@Override
public void delete(Long id);
@Override
public void delete(LivroEntity id);
}
这是服务器:http://felansu.sytes.net:8080/qr-bibliokode-ws/livro/
我尝试发送删除请求(Whit Advanced Rest Client chrome-extension),但这是返回:
Status
403 Forbidden Show explanation Loading time: 41
Request headers
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
Content-Type: application/json
Accept: */*
DNT: 1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,ca;q=0.2,es;q=0.2
Cookie: archiva_login=%7B%22username%22%3A%22admin%22%2C%22password%22%3Anull%2C%22confirmPassword%22%3Anull%2C%22fullName%22%3A%22the%20administrator%22%2C%22email%22%3A%22gaferran%40gmail.com%22%2C%22permanent%22%3Afalse%2C%22validated%22%3Atrue%2C%22timestampAccountCreation%22%3Anull%2C%22timestampLastLogin%22%3Anull%2C%22timestampLastPasswordChange%22%3Anull%2C%22locked%22%3Afalse%2C%22passwordChangeRequired%22%3Afalse%2C%22assignedRoles%22%3A%5B%5D%2C%22modified%22%3Afalse%2C%22readOnly%22%3Afalse%2C%22userManagerId%22%3Anull%2C%22rememberme%22%3Afalse%2C%22logged%22%3Afalse%7D; hudson_auto_refresh=true; __utma=269169510.1818243347.1410754939.1414082251.1414613247.11; __utmz=269169510.1410754939.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); auth_token=013273b46bafe62d0206136c3bc45eb62bd04d58
Response headers
Server: Apache-Coyote/1.1
Content-Type: text/plain
Transfer-Encoding: chunked
Date: Fri, 31 Oct 2014 20:36:35 GMT
感谢。
答案 0 :(得分:0)
这解决了我的问题。
我用@RestController注释创建了LivroController。
@RestController
public class LivroController {
@Autowired
LivroRepository livroRepository;
@RequestMapping(value = "/livroInserir", method = RequestMethod.POST, consumes = "application/json")
public @ResponseBody LivroEntity inserir(@RequestBody LivroEntity livro) {
return livroRepository.save(livro);
}
@RequestMapping(value = "/livroDeletarById", method = RequestMethod.DELETE)
public @ResponseBody void deletarById(@RequestParam(value="id") Long id) {
livroRepository.delete(livroRepository.findById(id));
}
@RequestMapping(value = "/livroDeletarByTitulo", method = RequestMethod.DELETE)
public @ResponseBody void deletarByTitulo(@RequestParam(value="titulo") String titulo) {
livroRepository.delete(livroRepository.findByTitulo(titulo));
}
@RequestMapping(value = "/livroProcurarById", method = RequestMethod.GET)
public LivroEntity procurarById(@RequestParam(value="id") Long id) {
return livroRepository.findById(id);
}
@RequestMapping(value = "/livroProcurarByTitulo", method = RequestMethod.GET)
public LivroEntity procurarByTitulo(@RequestParam(value="titulo") String titulo) {
return livroRepository.findByTitulo(titulo);
}
@RequestMapping(value = "/livroListarTodos", method = RequestMethod.GET)
public ArrayList<LivroEntity> listarTodos() {
return (ArrayList<LivroEntity>) livroRepository.findAll();
}
@RequestMapping(value = "/livroAtualizar", method = RequestMethod.PUT, consumes = "application/json")
public LivroEntity atualizar(@RequestBody LivroEntity livro) {
LivroEntity editado = livroRepository.findOne(livro.getId());
editado.setTitulo(livro.getTitulo());
return livroRepository.save(editado);
}
并使用以下语法:
Inserir livro via Post: http:// localhost:8080 / qr-bibliokode-ws / inserir {“id”:“1”,“titulo”:“Nome do livro”}
Deletar por id via DELETE http:// localhost:8080 / qr-bibliokode-ws / livroDeletarById?id = 1
Deletar por titulo通过DELETE http:// localhost:8080 / qr-bibliokode-ws / livroDeletarByTitulo?titulo = John
通过GET进行检索 http:// localhost:8080 / qr-bibliokode-ws / livroProcurarById?id = 1
通过GET检索titulo http:// localhost:8080 / qr-bibliokode-ws / livroProcurarByTitulo?titulo = Johns
Listar todos os livros通过GET http:// localhost:8080 / qr-bibliokode-ws / livroListarTodos
Atualizar livro通过PUT http:// localhost:8080 / qr-bibliokode-ws / livroAtualizar {“id”:“1”,“titulo”:“Novo titulo”}