Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

erro 404 ao inserir

Bom dia. Estou com um problema na hora de inserir o produto aonde quando tento apresenta que não foi encontrado rota POST (POST http://localhost:4000/produto) obs. os comandos GET e DELETE funciona normalmente.

Alguem sabe oque está ocorrendo ?

Método criar produto

CriarProdutos: (produto) =>{
        return fetch('http://localhost:4000/produto', {method: 'POST', headers: {'content-type': 'application/json'}, body: produto})
        .then(res => res.json());;

    },

Escutador de submite

escutadorDeSubmit = produto => {

ApiService.CriarProdutos(JSON.stringify(produto))
      .then(res => res)
      .then(produto =>{
        this.setState({autores:[...this.state.autores, produto]})
        PopUp.exibeMensagem('success', 'Produto adicionado com sucesso')
      })

}

class App

import React, { Component } from 'react'; import 'materialize-css/dist/css/materialize.min.css'; import './App.css'; import Header from './Header'; import Tabela from './Tabela'; import Formulario from './Formulario'; import PopUp from './PopUp'; import ApiService from './ApiService';

class App extends Component {

constructor(props){ super(props);

this.state = {
  autores: [

  ],
}

}

removeAutor = id => {

const { autores } = this.state;

this.setState({
  autores: autores.filter((autor) => {
    return autor.id !== id;
  }),
})

PopUp.exibeMensagem('error', 'Produto Apagado');

ApiService.DeletarProdutoId(id, this.autor)

}

escutadorDeSubmit = produto => {

ApiService.CriarProdutos(JSON.stringify(produto))
      .then(res => res)
      .then(produto =>{
        this.setState({autores:[...this.state.autores, produto]})
        PopUp.exibeMensagem('success', 'Produto adicionado com sucesso')
      })

} // adiciona os produtos na tabela mediande a resposta do banco de dados componentDidMount(){ ApiService.ListaProdutos() .then(res =>{ this.setState({autores: [...this.state.autores, ...res]}) }); }

render() {

return (
  <div>
    <Header />
    <div className="container">     
       <Tabela autores={this.state.autores} removeAutor={this.removeAutor} />
      <Formulario escutadorDeSubmit={this.escutadorDeSubmit} />
    </div>

  </div>
);

} }

export default App;

3 respostas

Fala ai Thayron, tudo bem? Você mudou sua API para rodar na porta 4000? Pergunto isso porque no curso a mesma sobe e fica ouvindo requisições na porta 8000.

Espero ter ajudado.

solução!

Boa noite Matheus Castiglioni, tudo bem ?

No meu caso estava criando um serviço baseado nos estudos do curso, primeiro eu abstrai o conteúdo e depois fui tentar fazer e apresentou alguns erros na hora de inserir os dados na tabela usando o verbo POST.

Nesse caso especifico criei uma API em node que roda na porta 4000, aonde serviço em React tinha que fazer requisição nela, e estava apresentado erros.

Etudei um pouco sobre as requisições fetch e a solução foi mudar um pouco.

Ficou assim:

CriarProdutos: (produto) => {
        const data = {
            nome: produto.nome
        }
        return fetch('http://localhost:4000/produto', {
            method: 'POST',
            body: JSON.stringify(data),
            headers: {
                'Content-Type': 'application/json'
            }
        }).then(res => res.json());

    },

Nesse caso, como minha API na rora produtos estava esperando somente um nome, então fiz essa mudanças na hora de inserir. AI funcionou certinho... rsrsrs.

muito obrigado por tentar me ajudar. O curso esta sendo muito bom para minha curva de aprendizado.

Fala Thayron, muito bom, fico feliz que tenha resolvido seu problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.