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

使用REST API更新Magento 2.1库存报错:Request does not match any route

问题:Magento 2.1 REST API 更新库存时返回 "Request does not match any route" 错误

我尝试用VB.NET代码调用Magento 2.1的REST API更新商品库存数量,但一直收到JSON错误响应:

{"message": "Request does not match any route."}

我的VB.NET代码如下:

Dim Access_Token = "XXXXXXXXXXXXX"
Try
    Dim VATWebClient = New WebClient()
    VATWebClient.Headers(HttpRequestHeader.Accept) = "application/json"
    VATWebClient.Headers(HttpRequestHeader.ContentType) = "application/json"
    VATWebClient.Headers(HttpRequestHeader.Authorization) = "Authorization Bearer " & Access_Token
    Dim Response As String
    Response = VATWebClient.UploadString("http://www.xxxxxx.com/rest/V1/products/xxxx/stockItems/1", "{""stockItem"":{""qty"":100}}")
Catch webEx As WebException
    Dim errorMessage As String = webEx.Message
    Dim errorStack As String = webEx.StackTrace
End Try

我还用SoapUI测试了这个调用,结果还是一样的错误。之前看到资料说需要更新webapi.xml配置这个API,但我联系不上主机/网站开发者,希望找到不需要修改配置的解决办法。


解决方案

我帮你排查几个关键问题,不需要修改webapi.xml大概率就能解决:

  • 修正请求方法
    Magento 2更新库存的REST API要求使用PUT方法,但你的UploadString调用默认用的是POST,这是最核心的问题!你需要明确指定请求方法为PUT:

    Response = VATWebClient.UploadString("http://www.xxxxxx.com/rest/V1/products/xxxx/stockItems/1", "PUT", "{""stockItem"":{""qty"":100}}")
    
  • 修复Authorization Header格式
    你写的Header多了冗余的"Authorization"字样,正确格式应该是Bearer {token},修改这行代码:

    VATWebClient.Headers(HttpRequestHeader.Authorization) = "Bearer " & Access_Token
    
  • 确认商品SKU与库存ID正确性
    把URL里的xxxx替换为实际存在的商品SKU,同时确认库存项ID是1(Magento默认库存ID通常是1,多仓库配置的话需要核对后台的库存ID)。

  • 验证路由可用性
    如果前面的修改还是不行,你可以先用GET请求测试路由是否存在:

    Response = VATWebClient.DownloadString("http://www.xxxxxx.com/rest/V1/products/你的实际SKU/stockItems/1")
    

    如果GET也报错,可能是你的站点REST路径有特殊配置(比如部分站点会用rest/default带store code的路径),或者Magento安装本身缺失了默认路由——不过这种情况比较少见。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:16:07