0

API RESTful com Spring Boot

#Java #Spring Web MVC #Spring Boot
Cleber Schuster
Cleber Schuster

Uma API RESTful é implementada no BACKEND para ser consumida no FRONTEND.


REST significa: Representacional State Transfer, em português Transferência de Estado Representacional.


Definição de REST: É um modelo de arquitetura e não uma linguagem ou tecnologia de programação, que fornece diretrizes para que os sistemas distribuídos se comuniquem diretamente usando os princípios e protocolos existentes da Web, como HTTP e seus métodos.


Os métodos HTTP mais usados são:

GET: Usado para buscar informações

POST: Para criar/adicionar informações

PUT: Para atualizar informações

DELETE: Para excluir informações


Definição de RESTful: capacidade de determinado sistema aplicar os princípios de REST.

Resumindo, RESTful é uma aplicação que implementa REST.


Uma API RESTful pode ser acessada por qualquer aplicação FrontEnd independente da linguagem ou tecnologia usada pra desenvolver tal aplicação. Isso é um grande benefício para empresas e desenvolvedores.


Implementar e utilizar uma API RESTful é bem simples, logo abaixo coloquei um exemplo de classe que implementa REST.

Para criar esta classe de exemplo, utilizei o framework SPRING WEB MVC com linguagem JAVA e a IDE Spring Tools Suite.

A classe deve estar na camada Controller em projetos Spring MVC.


A classe e os métodos são mapeados com as anotações de REST.

As partes do código em vermelho são as anotações de REST, veja abaixo como é simples.


@RequiredArgsConstructor

@RestController //habilita a classe para implementar REST

@RequestMapping(value = "/clientes") // mapeia endpoints

public class ClienteController {

  private final ClienteService service;

   

  @GetMapping

  public ResponseEntity<Collection<Cliente>> findAll() {

    Collection<Cliente> collection = service.findAll();

    return ResponseEntity.ok().body(collection);

  }


  @GetMapping(path = "/{id}")

  public ResponseEntity<Cliente> findById(@PathVariable Integer id) {

    Cliente obj = service.findById(id);

    return ResponseEntity.ok().body(obj);

  }


  @PostMapping

  public ResponseEntity<Cliente> insert(@Valid @RequestBody Cliente obj, BindingResult br) {

    if (br.hasErrors())

    throw new ConstraintException(br.getAllErrors().get(0).getDefaultMessage());

    obj = service.insert(obj);

    return ResponseEntity.ok().body(obj);

  }

   

  @PutMapping

  public ResponseEntity<Cliente> update(@Valid @RequestBody Cliente obj, BindingResult br) {

    if (br.hasErrors())

    throw new ConstraintException(br.getAllErrors().get(0).getDefaultMessage());

    obj = service.update(obj);

    return ResponseEntity.ok().body(obj);

  }


  @DeleteMapping(path = "/{id}")

  public ResponseEntity<Void> delete(@PathVariable Integer id) {

    service.delete(id);

    return ResponseEntity.noContent().build();

  }


}


Veja abaixo como ficam as URLs endpoins que serão utilizadas no FRONTEND criadas para este exemplo com REST.

Repare que algumas URLs ficam idênticas, mas o que difrencia o tipo de ação delas será verbo HTTP usado no FRONT END.


Esta URL insere um novo cliente usando o método insert() da classe de exemplo acima

https://example.com/clientes       (no FRONTEND utilize o verbo INSERT)


Esta URL busca todos os clientes usando o método findAll() da classe de exemplo acima

https://example.com/clientes       (no FRONTEND utilize o verbo GET)


Esta URL busca o cliente com id 375 usando o método findById() da classe de exemplo acima

https://example.com/clientes/375   (no FRONTEND utilize o verbo GET e o id)


Esta URL deleta o cliente com codigo 1234 usando o método delete() da classe de exemplo acima

https://example.com/clientes/1234  (no FRONTEND utilize o verbo DELETE e o id)


Esta URL atualiza um cliente usando o método update() da classe de exemplo acima

https://example.com/clientes       (no FRONTEND utilize o verbo PUT)
0
57

Comentários (0)

None

Brasil