gpt4 book ai didi

swift - Kitura TypeSafeHTTPBasic 身份验证在帖子正文中寻找凭据?

转载 作者:搜寻专家 更新时间:2023-11-01 06:59:28 27 4
gpt4 key购买 nike

我在 Kitura 中有一个 TypeSafe Codeable 路由,定义如下:

app.router.post("/games") { (auth: BasicAuth, respondWith: @escaping (Game?, RequestError?) -> ()) in 
...
}

但是当我发出 get 请求时,我收到 Could not decode received JSON: The required key 'id' not found.。这似乎是路由器试图从 POST 正文而不是基本 auth header 解析 auth 对象。如果我将路由更改为 GET,它工作得很好,但我不太了解 Type Safe Codeable 路由,而且我对 POST 路由发生的变化感到困惑。如何让我的 BasicAuth 与 POST 和 GET 一样工作?

最佳答案

当使用 Kitura 的 Codable 路由时,POST 处理程序期望从消息正文接收 Codable 输入。您可以选择指定一个或多个 TypeSafeMiddleware 要求。

如果要执行 POST,则需要匹配 the post() function on Router以 Codable 和 TypeSafeMiddleware 作为输入:

app.router.post("/games") { (auth: BasicAuth, input: MyInputType, respondWith: @escaping (Game?, RequestError?) -> ()) in 
...
}

在您的案例中发生的事情是您实际上正在匹配 this post() function without TypeSafeMiddleware ,其中您的身份验证类型(符合 Codable)被解释为您的输入类型。

如果您不希望为此请求向服务器发送有效载荷,也许您想要的是一个 GET 来匹配 the get() function on Router只需要一个 TypeSafeMiddleware 作为输入:

app.router.get("/games") { (auth: BasicAuth, respondWith: @escaping (Game?, RequestError?) -> ()) in 
...
}

请注意,TypeSafeMiddleware 是路由处理程序的第一个参数,然后是任何其他输入类型(在 PUT 或 POST 的情况下)。

关于swift - Kitura TypeSafeHTTPBasic 身份验证在帖子正文中寻找凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com