2014-10-31 61 views
-1

如何用Spring Data Rest删除实体?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/

我尝试发送删除请求(白衣高级REST客户端铬扩展),但是这是回报:

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

看起来你没有被授权这么做。 [错误代码403](http://en.wikipedia。org/wiki/HTTP_403) – denisazevedo 2014-10-31 20:44:29

+0

看看你的'archiva_login'。 – denisazevedo 2014-10-31 20:51:01

回答

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这份绿皮书: HTTP://本地主机:8080/QR-bibliokode-WS/inserir { “ID”: “1”,“ TITULO “:” 诺姆做这份绿皮书“}通过DELETE HTTP


Deletar POR ID://本地主机: ?8080/QR-bibliokode-WS/livroDeletarById ID = 1


Deletar POR TITULO经由DELETE HTTP://本地主机:8080/QR-bibliokode-WS/livroDeletarByTitulo TITULO =约翰

//本地主机:8080/QR-bibliokode-WS/livroProcurarById ID = 1

经由GET HTTP

Procurar POR ID //本地主机:8080/QR-bibliokode-WS/livroProcurarByTitulo TITULO =约翰斯


Listar托多斯奥斯圣托livros通过GET HTTP


Procurar POR TITULO通过GET http:// localhost:8080/qr-bibliokode-ws/livroListarTodos


|刷新这份绿皮书通过PUT HTTP://本地主机:8080/QR-bibliokode-WS/livroAtualizar { “ID”: “1”, “TITULO”: “诺TITULO”}