无法从客户端向 Fastify 后端发出 PUT 请求 [重复]
Posted
技术标签:
【中文标题】无法从客户端向 Fastify 后端发出 PUT 请求 [重复]【英文标题】:Can't make PUT requests from client side to Fastify backend [duplicate] 【发布时间】:2021-12-02 07:51:25 【问题描述】:我正在尝试通过向我的 Fastify 服务器发送 PUT 请求从客户端更新信息,但没有发送任何内容。也没有错误显示,只是没有变化。
POST 和 GET 请求在客户端可以正常工作。
PUT 请求在 Insomnia/Postman 中工作。
我已经安装了 fastify-cors:
fastify.register(require("fastify-cors"),
origin: "*",
methods: "GET,POST,PUT,PATCH,DELETE",
);
客户端请求
export default function EditUser( route, navigation )
const item = route.params;
const [firstName, setFirstName] = useState(item.name[0].firstName);
const editUser = async () =>
try
const res = await fetch(`http://<myIPaddr>:5000/api/users/$item._id`,
method: "PUT",
headers:
Accept: "application/json",
"Content-Type": "application/json",
,
body: firstName,
);
console.log(firstName);
catch (error)
console.log(error);
;
return (
<View>
<Layout>
<Text style=styles.text>EDIT USER PAGE</Text>
<View>
<TextInput
style=styles.input
onChangeText=(e) => setFirstName(e)
value=firstName
/>
<Text style= color: "#FFF" >item._id</Text>
<Button title="save changes" onPress=editUser />
</View>
</Layout>
</View>
);
后端路由
fastify.put("/:id", async (request, reply) =>
try
const id = request.params;
const user = await User.findByIdAndUpdate(id, request.body);
if (!user)
return reply.status(400).send( error: "couldn't find user" );
reply.status(200).send( success: true, data: user );
catch (error)
reply.status(400).send( error: "request failed" );
);
【问题讨论】:
【参考方案1】:检查后端日志,可能是您使用的是return reply.send
。删除return
。 From the docs:
警告:
同时使用返回值和reply.send(value)时, 发生的第一个优先,第二个值将是 丢弃,并且还会发出警告日志,因为您尝试 发送两次响应。
【讨论】:
没有变化,真的很困惑为什么这不起作用【参考方案2】:找到了解决办法,我没有以正确的方式传递数据
const editUser = async () =>
const userEndpoint = `http:<myIPaddr>:5000/api/users`;
try
const res = await axios(
url: `$userEndpoint/$item._id`,
method: "PUT",
data:
name:
firstName: firstName,
,
,
);
console.log(firstName);
catch (error)
console.log(error);
;
【讨论】:
以上是关于无法从客户端向 Fastify 后端发出 PUT 请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法从 reactjs 中的 axios 向 id=1 文章的 django REST API 后端发出 GET 请求
Django CSRFToken 中间件附加到 URL 并在向服务器发出“PUT”请求后显示。 (AJAX 问题)
我无法向自己的 Spring 引导服务器发出 Angular Http 请求