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)
Comentários (0)