javascript - 获取 API 不通过 post 发送数据

标签 javascript node.js reactjs express

我在使用 Fetch API 通过 post 发送数据时遇到问题,服务器只收到一个空的 JSON。有人能帮我吗?基本上,我正在更新状态中的数据并发送到 API。

提交的数据 = 请求。

submitedData = async (event) => {
   event.preventDefault();
   let data = {produto: this.state.produto, preco: this.state.preco};
   data = JSON.stringify(data);
   const result = await fetch('/api/add', {
       method: 'post',
       body: data
   });
   const body = await result.json();
   if(result.status == 200){
       //if all that's ok
   }else{
       console.log(body.message);
   }
}

changeInput = 改变状态。

changeInput = (event) => {
    const field = event.target.name;
    this.setState({ [field]: event.target.value });
}

render = 触发提交的数据。

render(){
    return(
        <Grid>
            <Row>
                <Col sm={12}>
                    <Form horizontal onSubmit={this.submitedData} >
                        <FormGroup>
                            <Col sm={1}> <b> Produto: </b> </Col>
                            <Col sm={8}> 
                                <FormControl type="text" placeholder="Produto" value={this.state.produto} onChange={this.changeInput} name="produto" required/>
                            </Col>
                        </FormGroup>
                        <FormGroup>
                            <Col sm={1}> <b> Preço: </b> </Col>
                            <Col sm={8}> 
                                <FormControl type="number" placeholder="Preço" value={this.state.preco} onChange={this.changeInput} name="preco" required />
                            </Col>
                        </FormGroup>
                        <FormGroup>
                            <Col smOffset={1} sm={8}>
                                <Button type="submit" bsStyle="success"> Salvar </Button>
                            </Col>
                        </FormGroup>
                    </Form>
                </Col>
            </Row>
        </Grid>
    );
}

应用程序接口(interface)

var express = require('express');
var Crud = require('./database/Crud');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());

app.post('/api/add', function(req, res){
  res.send(req.body);
  console.log(req.body); // {} json empty
});

最佳答案

您需要将请求正文字符串化并添加 JSON 内容类型 header 。

const result = await fetch('/api/add', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(data)
});

关于javascript - 获取 API 不通过 post 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54270081/

相关文章:

javascript - 如何从项目列表中选择 ScrollView 中的中心项目

javascript - 将 document.write 字符串放入元素中

JavaScript 方法写入 Microsoft Visual Web Developer 调试器?

Javascript,jQuery : Change a certain word of a div into a <span> with a function

node.js - 使用 Node.js 对重音字符进行编码

node.js - 使用 Karma 加载 HTML 文件

javascript - Safari 中的脚本执行问题

node.js - Nodejs 进程是否可以使用比可用物理内存更多的内存(通过使用交换内存)?

reactjs - Ag Grid 防止列在排序过程中更改

reactjs - 无法在 Jenkins 管道中构建 reactjs