Nessa aula utilizamos o método post pra criar as ofertas, mas pra mim sempre dá o status 403 - Forbidden Meu arquivo html
<!DOCTYPE html>
<html lang="pt-br" xmlns="http://www.w3.org/1999/html">
<head th:replace="~{base :: head}"></head>
<body onload="onLoad()">
<div th:replace="~{base :: logo}"></div>
<div class="container" id="ofertas">
<div th:replace="~{base :: titulo('Faça sua Oferta')}"></div>
<div class="card mt-3 mb-3" v-for="pedido in pedidos">
<div class="card-header alert-dark">{{pedido.nomeProduto}}</div>
<div class="card-body">
<div class="row">
<div class="col-12 col-sm-8 mb-3">
<div>Produto</div>
<div><a v-bind:href="pedido.urlProduto">{{pedido.nomeProduto}}</a></div>
<div>Descrição</div>
<div>
<textarea disabled class="form-control">{{pedido.descricao}}</textarea>
</div>
<div class="row mt-3">
<div class="col-md-5">Valor:<input class="form-control" v-model="pedido.valorNegociado"/></div>
<div class="col-md-7">Data da entrega:<input class="form-control" v-model="pedido.dataEntrega"/>
</div>
<div class="mt-2">
<div>Comentário:</div>
<div>
<textarea class="form-control" v-model="pedido.comentario"></textarea>
</div>
</div>
</div>
<button v-if="pedido.ofertaEnviada" class="btn btn-success mt-3">Oferta Enviada</button>
<button v-else v-on:click="enviarOferta(pedido)" class="btn btn-primary mt-3">Enviar Oferta</button>
</div>
<div class="col-12 col-sm-4">
<div>
<img class="img-thumbnail" v-bind:src="pedido.urlImagem">
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function onLoad() {
var app = new Vue({
el: '#ofertas',
data: {
pedidos: []
},
mounted() {
axios
.get('http://localhost:8081/api/pedidos/aguardando')
.then(response => {
response.data.forEach(pedido => pedido.ofertaEnviada = false)
this.pedidos = response.data
})
},
methods: {
enviarOferta: function (pedido) {
console.log(pedido);
axios.post('http://localhost:8081/api/ofertas', {
pedidoId: pedido.id,
valor: pedido.valorNegociado,
dataEntrega: pedido.dataEntrega,
comentario: pedido.comentario
})
.then(response => pedido.ofertaEnviada = true)
.catch((err) => console.log(err));
}
}
});
}
</script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</body>
</html>
e meu controller
package br.com.victor.mudiSecurity.api;
import br.com.victor.mudiSecurity.dto.*;
import br.com.victor.mudiSecurity.model.*;
import br.com.victor.mudiSecurity.repository.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@RequestMapping("api/ofertas")
public class OfertasRest {
@Autowired
PedidoRepository pedidoRepository;
@PostMapping
public Oferta criaOferta(@RequestBody RequisicaoNovaOferta requisicaoNovaOferta) {
Optional<Pedido> pedidoBuscado = pedidoRepository.findById(requisicaoNovaOferta.getPedidoId());
if (!pedidoBuscado.isPresent()) {
return null;
}
Pedido pedido = pedidoBuscado.get();
Oferta nova = requisicaoNovaOferta.toOferta();
nova.setPedido(pedido);
pedido.getOfertas().add(nova);
pedidoRepository.save(pedido);
return nova;
}
}