Azure Function不返回405响应

问题描述

如果仅为POST定义了HTTP触发器,但是用户尝试在同一URL上执行GET,则Azure Functions将返回404而不是预期的405。

在这种情况下返回HTTP状态代码405的最佳方法是什么? (以及必需的“允许”标头)

有趣的是,APIM当前还返回404而不是405个响应(https://feedback.azure.com/forums/248703-api-management/suggestions/32626496)。

解决方法

我检查了很多文档和博客,但没有找到完美的解决方案。我有一个解决方案,它看起来有点愚蠢,但是可以。

解决方案

您可以允许使用get请求,然后在@commands.command(name='kick') @commands.guild_only() @commands.has_permissions(kick_members=True) async def kick(self,ctx,member : discord.Member,*,reason=None): await member.kick(reason=reason) await ctx.send(f'User {member.mention} has been kicked for: "{reason}".') @kick.error async def kick_error(self,error,ctx): if isinstance(error,error.MissingPermissions): await ctx.send(":redTick: You don't have permission to kick members.") 中对其进行判断。如果是Function请求,请手动指定get状态代码。

enter image description here

完整的示例代码如下:

405

预期返回的状态码:

enter image description here