在应用服务计划中部署时,内容类型为 application/x-www-form-urlencoded 的 API(FastAPI 和 Azure 函数)终结点不起作用

An API (FastAPI & Azure function) endpoint with content type of application/x-www-form-urlencoded not working when deployed in app service plan

提问人:Yugesh 提问时间:11/8/2023 最后编辑:Yugesh 更新时间:11/17/2023 访问量:75

问:

我有一个使用快速 api 的 azure 函数。当 api 部署在无服务器计划中时,所有端点都能完美运行。但是,当它部署在应用服务计划中时,当从前端请求时,登录终结点会显示 422(未处理实体),但在从 api doc“domain/doc” 请求时有效。终结点接受 application/x-www-form-urlencoded 的内容类型。当从前端请求时,所有其他终结点也正常工作。

这是前端应用程序的源代码

const formData = new URLSearchParams();
  formData.append("username", username);
  formData.append("password", password);
  console.log(formData.toString())
  const response = await fetchClient.post<Token>(
    "/v1/login",
    formData.toString(),
    {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
      },
    }
  );
  • 我已经确认两个应用程序具有完全相同的配置

该问题已通过在每个请求的末尾使用 / 得到解决

azure-functions fastapi azure-appservice azure-app-service-plans

评论

0赞 Dasari Kamali 11/14/2023
能否提供有关如何从 Azure 函数代码调用快速 API 的完整代码?
0赞 Vivek Vaibhav Shandilya 11/16/2023
@Yugesh尝试使用和代替使用const formData = new FormData();formData.toString()body : form Data,
0赞 Yugesh 11/17/2023
谢谢@VivekVaibhavShandilya,但是上面的脚本和您的建议是一样的。
0赞 Yugesh 11/17/2023
@DasariKamali这是 github.com/yugyesh/fast-api-azure-function 示例源代码。
0赞 Harshitha 11/28/2023
@Yugesh - 请发布您的解决方案作为答案。

答:

0赞 Yugesh 12/14/2023 #1
  • 我已经通过在每个请求的末尾使用 / 解决了这个问题。我不确定原因。