问题描述
如果仅为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
状态代码。
完整的示例代码如下:
405
预期返回的状态码: