使用React JS将数据发布到API

时间:2018-07-31 09:39:22

标签: reactjs api post

我是React的新手,试图将数据发布到某些API,但我无法做到这一点。这就是我尝试过的方式

import React, { Component } from "react";

class Apinew extends Component {
  constructor() {
    super();
    this.state = {
      id: '',
      name: '',
      quote: '',
      created_on: ''
    };
  }
  change = e => {
    this.setState({
      [e.target.name]: e.target.value
    });
  };
  onSubmit = e => {
    e.preventDefault();
    console.log(this.state);

    fetch('someAPI', {
      method: 'post',
      headers: { 'Content-Type': 'application/json' },
      body: {
        id: this.id.value,
        text: this.quote.value,
        author: this.name.value,
        created_on: this.createdOn.value
      }
    });
  };
  render() {
    return (
      <div>
        <form>
          <input
            name="id"
            ref={ref => {
              this.id = ref;
            }}
            placeholder="Enter ID"
            value={this.state.id}
            onChange={e => this.change(e)}
          />
          <br />
          <input
            name="name"
            ref={ref => {
              this.name = ref;
            }}
            placeholder="Enter Name"
            value={this.state.name}
            onChange={e => this.change(e)}
          />
          <br />
          <input
            name="quote"
            ref={ref => {
              this.quote = ref;
            }}
            placeholder="Enter Quote"
            value={this.state.quote}
            onChange={e => this.change(e)}
          />
          <br />
          <input
            name="created_on"
            ref={ref => {
              this.createdOn = ref;
            }}
            placeholder="Created On"
            value={this.state.created_on}
            onChange={e => this.change(e)}
          />
          <br />
          <button onClick={e => this.onSubmit(e)}>Submit</button>
        </form>
      </div>
    );
  }
}

export default Apinew;

我收到此错误:

  

OPTIONS someAPI 405(不允许使用方法)

     

无法加载someAPI:飞行前响应包含无效的HTTP   状态代码405。

     

未捕获(承诺)TypeError:无法获取

出什么问题了?我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:2)

首先,您应该了解405 error means

  

“超文本传输​​协议(HTTP)405方法不允许”响应   状态码指示服务器知道请求方法   但已被禁用,无法使用。

fetch调用可能没有任何问题,但是您必须查看api的要求,也许您缺少权限,但很可能该方法是私有的,因此无法使用。