You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R向本地FastAPI发送POST请求及httr包404报错解决

问题解决办法

核心原因

你遇到的404问题最主要的诱因是httr默认调用系统代理配置,本地回环地址的请求被转发到代理服务器后无法找到对应本地服务,从R请求日志中的Proxy-Connection: Keep-Alive字段可以确认请求走了代理。Postman、Python requests默认会自动跳过本地地址的代理,因此可以正常响应。
其次如果你实际需要发送带JSON的POST请求,当前FastAPI侧仅定义了GET方法的/test路由,请求方法不匹配也会触发404状态码。

具体解决步骤

  • 方案1:单次请求临时禁用代理
    在httr请求参数中添加use_proxy(NULL)即可跳过代理,对应示例代码如下:
    如果你需要发送GET请求:

    r <- GET("http://127.0.0.1:4000/test", use_proxy(NULL), verbose())
    

    如果你需要发送带JSON的POST请求:

    library(httr)
    r <- POST(
      url = "http://127.0.0.1:4000/test",
      use_proxy(NULL),
      body = list(参数1 = "值1", 参数2 = "值2"),
      encode = "json",
      verbose()
    )
    

    同时需要在FastAPI侧补充对应的POST路由定义,示例如下:

    from fastapi import FastAPI
    from pydantic import BaseModel
    import uvicorn
    
    app = FastAPI()
    
    class TestReq(BaseModel):
        参数1: str
        参数2: str
    
    @app.get("/test")
    async def get_test():
        return "Hello"
    
    @app.post("/test")
    async def post_test(body: TestReq):
        return {"接收参数": body.dict()}
    
    if __name__ == '__main__':
        uvicorn.run(app, host='127.0.0.1', port=4000, debug=True)
    
  • 方案2:全局配置跳过本地代理
    在系统的代理设置中,将127.0.0.1、localhost加入代理例外列表,配置完成后所有本地请求无需额外加参数即可正常访问。


内容的提问来源于stack exchange,提问作者lakshman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:48:03