You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

API调用失败求助:POST请求返回404 Not Found错误

排查API调用404失败的原因及修复方案

从你遇到的404 Not Found错误来看,核心问题是请求的URL路径不存在,结合你的代码和实际请求记录,我整理了几个关键问题和解决思路:

1. URL端点与域名的双重偏差

你的代码里写的请求URL是:

'http://vph.com/api/GetService'.$hospital_id

但实际发送的请求是http://vpshealth.com/api/GetServiceList37——这里有两个明显的错误:

  • 域名不一致:代码里用的是vph.com,实际请求的是vpshealth.com,先确认正确的API域名,统一修正。
  • 端点名称错误:代码里拼接的是GetService+ID,但实际请求的是GetServiceList+ID,说明正确的API端点应该是GetServiceList而不是GetService,这是导致404的核心原因之一。

2. 参数传递方式不合理

从接口命名GetServiceList来看,它更偏向于获取列表的接口,这类接口通常不会把hospital_id直接拼在URL路径末尾,而是作为查询参数或请求体参数传递:

  • 如果是GET请求:把hospital_id作为查询参数,URL格式应为http://vpshealth.com/api/GetServiceList?hospital_id=37
  • 如果是POST请求:在form_params里用正确的参数名(比如hospital_id而非body)传递,而非拼在URL里

你的代码既把ID拼在URL末尾,又在请求体里传了body=>$hospital_id,属于重复传递,且参数名可能不符合API的要求。

3. 修正后的代码示例

假设正确的API信息为:域名vpshealth.com,端点/api/GetServiceList,POST请求,参数名hospital_id,修正后的代码如下:

public function index() { 
    $client = new Client(); 
    $hospital_id = 37; 
    $res = $client->request('POST', 'http://vpshealth.com/api/GetServiceList',[ 
        'form_params' => [ 
            'hospital_id' => $hospital_id 
        ] 
    ]);
}

如果API要求使用GET方法,代码调整为:

public function index() { 
    $client = new Client(); 
    $hospital_id = 37; 
    $res = $client->request('GET', 'http://vpshealth.com/api/GetServiceList',[ 
        'query' => [ 
            'hospital_id' => $hospital_id 
        ] 
    ]);
}

额外建议

  • 优先核对API文档:确认正确的域名、端点路径、HTTP方法、参数名称和传递方式,这是解决这类问题的根本。
  • 先用Postman或curl手动测试API:确认请求格式正确后再编写代码,能快速定位是代码问题还是API配置问题。

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

火山引擎 最新活动