如何发送 POST 请求以响应 node.js Express?
Posted
技术标签:
【中文标题】如何发送 POST 请求以响应 node.js Express?【英文标题】:How to send a POST request in react to node.js Express? 【发布时间】:2020-06-09 22:23:49 【问题描述】:我关注了this 视频以摆脱 cors 问题。它适用于 GET 请求。但是当我尝试发送 POST 请求时,它不起作用。我无法控制 3rd_Party_Api,因此无法对其进行任何更改。 我的电话如下: req-request 和 res-response。
ReactApp(3000) --req--> Express(8080) --req--> 3rd_Party_API(9091)
ReactApp
我不确定我哪里出错了。我在这里发布我的文件。 PostApp.js
import React, Component from 'react';
//import ReactDOM from 'react-dom';
import './App.css';
import axios from 'axios';
class App extends Component
constructor(props)
super(props);
this.state =
varName: '',
submit: ''
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
handleChange(event)
this.setState(
varName: event.target.value
);
handleSubmit(event)
event.preventDefault()
const base_url="http://127.0.0.1:8080/api/addvar"
const data=varName:this.state.varName
axios.post(base_url,data)
.then(response =>
console.log(response)
)
.catch(error =>
console.log(error.response)
)
console.log(JSON.stringify(data))
this.setState(
submit: this.state.varName
)
render()
return(
<div className="App">
<form onSubmit=this.handleSubmit>
<label>varName: </label>
<input type="text" value=this.state.varName onChange=this.handleChange />
<br/><br/><input type="submit" value="Add Name"/>
</form>
<h1>this.state.submit</h1>
</div>
)
export default App;
服务器.js
var request = require('request-promise');
var cors = require('cors');
var express = require('express');
var url = require('url');
var bodyParser = require('body-parser');
var app = express();
var server = app.listen('8080',function()console.log('listening to port 8080'););
app.use(bodyParser.json());
app.use(cors());
//app.get('/api/getNames',runThisCode);
console.log('got1');
app.get('/api/addName',plusname);
console.log('got3');
function plusname(req,res)
var input = req.body;
console.log('urlbody:' ,input);
var options =
method: 'POST',
url: 'http://localhost:9091/v1/names/',
body: req.body,
header:
'content-type' : 'application/json'
,
resolveWithFullResponse: true,
json: true
;
request(options)
.then((r1) =>
res.send(JSON.parse(r1.body));
)
.catch(err =>
console.log(err.response);
)
【问题讨论】:
【参考方案1】:您的服务器正在使用app.get
。要处理发布请求,您需要将其更改为 app.post
或 app.all
https://expressjs.com/en/guide/routing.html
【讨论】:
嗨,当我将它更改为 app.post 时,我又回到了 cors 问题的方方面面。 我不确定这是否是正确的答案,但它部分解决了我的问题,尽管遇到了 cors 问题。谢谢。以上是关于如何发送 POST 请求以响应 node.js Express?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 node.js Express 发送 POST 请求?
如何在 express/node js 中发送错误 http 响应?