当前位置: 首页 > 知识库问答 >
问题:

不能从客户端发出PUT请求来指定后端[重复]

慕容越泽
2023-03-14

我试图通过向Fastify服务器发送PUT请求从客户端更新信息,但没有发送任何信息。也没有错误显示,只是没有变化。

POST和GET请求在客户端运行良好。

把请求工作在失眠/邮递员。

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个答案

章光华
2023-03-14

检查后端日志,可能您使用的是return reply.send。删除返回。从文档中:

警告:

当同时使用return value和reply.send(value)时,发生的第一个值优先,第二个值将被丢弃,并且还会发出警告日志,因为您尝试发送了两次响应。

 类似资料:
  • 问题内容: 我正在研究实现HTTP客户端的Java程序。我测试它向服务器发送请求。GET,POST和DELETE请求工作正常。例如在POST请求后,我得到一个输出 数据库反映了所做的更改。 在PUT请求之后,但是我得到了指示错误的网页的以下html标记。 因此,数据库中没有任何更改。 我发现这可能与Content-Length标头有关,但我不确定。尝试添加此标头后,我的程序等待一分钟,然后引发异常

  • 我有这个代码: 我一直在犯这样的错误: java:不兼容的类型:com。应用句子分类请求。无法将生成器转换为com。应用句子分类请求 我已经使用Maven插件生成了gRPC Java文件。在看了多个例子后,我不确定我的问题是什么。

  • 客户端的HTTP/HTTPS请求。 进程:主进程​ ClientRequest是由EventEmitter来实现Writable Stream​ new ClientRequest(options) 作用:发起新的HTTP/HTTPS请求 options(Object | String) - options是String时即请求URL。 options 是Object时则按以下属性请求: meth

  • 我对监视应用程序使用的HTTP REST API很感兴趣。 使用spring boot、dropwizard和EnablePrometheUseEndpoint。我能够在prometheusendpoint上生成这样的prometheus指标: 我想在grafana中构建一个图形来显示对uri上GET方法的所有调用api_v1_objects不同的状态代码(每个状态代码一行)。 我应该将状态代码设

  • httplib 库主要用来模拟客户端发送 HTTP 请求,类似于 Curl 工具,支持 JQuery 类似的链式操作。使用起来相当的方便;通过如下方式进行安装: go get github.com/astaxie/beego/httplib 如何使用 首先导入包 import ( "github.com/astaxie/beego/httplib" ) 然后初始化请求方法,返回对象 r