# Web

**Todas as Anottations web ficam no Controller** (EndPoints).

*   #### @RestController - Usado para serviço RESTful = @Controller + @ResponseBody.


*   #### @RequestMapping - Definimos qual a URI que o cliente irá enviar para acessar todos os métodos desse EndPoint.



Primeiro passamos só inicio dela, depois nos outros metodos abaixo passaremos o resto. [Veja aqui](https://github.com/MichelliBrito/parking-control-api/blob/8df47619b3016659e88dedb591c2f90ba25b5f4e/src/main/java/com/api/parkingcontrol/controllers/ParkingSpotController.java#L33)

```java
Derivam do RequestMapping. Receberam uma função POST, GET, PUT ou DEL do tipo HTTP.

@PostMapping
@GetMapping 
@PutMapping
@DeleteMapping
```

*   #### @RequestBody - Ele vai desserializar a classe DTO de JSON para Objeto Java. [Veja aqui](https://github.com/MichelliBrito/parking-control-api/blob/8df47619b3016659e88dedb591c2f90ba25b5f4e/src/main/java/com/api/parkingcontrol/controllers/ParkingSpotController.java#L92)


*   #### @PathVariable - No @GetMapping, por exemplo, nós passamos um caminho `"/{id}"`. O PathVariable consegue recuperar essa parte da URI.



Basta passarmos nele `(value = "id")`. [Veja aqui](https://github.com/MichelliBrito/parking-control-api/blob/8df47619b3016659e88dedb591c2f90ba25b5f4e/src/main/java/com/api/parkingcontrol/controllers/ParkingSpotController.java#L83)

*   #### @RequestParam - Parecido com o PathVariable, dependendo do parâmetro, podemos colocar depois do primeiro parâmetro, um required = true/false. Para ser obrigatório ou não. [Veja aqui](https://github.com/MichelliBrito/parking-control-api/blob/8df47619b3016659e88dedb591c2f90ba25b5f4e/src/main/java/com/api/parkingcontrol/controllers/ParkingSpotController.java#L133)


*   #### @CrossOrigin - É onde habilitamos o cors. É onde determinamos as origens/domínios que irão acessar a nossa API. Se colocar "\*" será all.



maxAge = tempo máximo de resposta. [Veja aqui](https://github.com/MichelliBrito/parking-control-api/blob/8df47619b3016659e88dedb591c2f90ba25b5f4e/src/main/java/com/api/parkingcontrol/controllers/ParkingSpotController.java#L32)

Pode ser feito a nível de: classe, método e também configurações globais da aplicação.
