Spring Data Rest中的删除/删除方法

时间:2014-10-31 20:39:57

标签: angularjs 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/

我尝试发送删除请求(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 

感谢。

1 个答案:

答案 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”}