问题标签 [ktor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1291 浏览

android - KTor URLBuilder encodedPath 与动态路径

我正在尝试使用ktor. 我的GET请求代码是这样的:

在某些时候,我的路径包含这样的用户 ID /users/{user_id}。我可以在字符串中进行搜索和替换并将其替换user_id为实际值,但是还有其他方法可以做到这一点吗?任何ktor特定的方式。

例如,Retrofit我们有这个:

编辑:添加更多代码

request.path?.forEach { requestPath = requestPath.replace(it.first, it.second)}替换任何运行时路径值。

0 投票
2 回答
1626 浏览

authentication - 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?

所以,我正在构建一个 API 系统。我想使用 KeyCloak 进行身份验证和用户管理,因为它有一个很好的访问控制。我正在将它与 Ktor 集成,我希望我的用户使用他们自己的 UI。或者至少,我想制作 UI。

我读过主题定制,但这不是我想要的。我还了解到 KeyCloak UI 紧密集成在他们的代码中。我只是希望知道至少当其中一个客户端应用程序是移动应用程序时,我是否可以将例如 android UI 用于整个登录流程?

如果不可能,我认为不太可能,是否有任何其他用于访问控制的库或框架,最好是与 Ktor 一起使用的库或框架?

0 投票
1 回答
401 浏览

firebase - 尝试使用 Ktor/Java8 读取在 App Engine Standard 上运行的数据时,Firestore 客户端挂起

我在 Google App Engine 标准环境(使用 Java8、Kotlin 和 Ktor)中与 Firestore 集成时遇到问题。当我尝试执行任何操作时,Firestore 客户端挂起。在开发应用程序服务器中运行时它工作正常,但在生产中运行时却不行。

我在跑:

  • 克托尔 1.1.2
  • 科特林 1.3.21
  • com.google.cloud:google-cloud-firestore(0.81.0-beta 版)
  • 原生模式下的 Firestore

我已经用这条简单的路线进行了测试:

在 Web 浏览器中访问/test会导致站点在返回 500 错误之前挂起一分钟。

Google Cloud Platform 中记录了以下异常:

以下是我的 application.conf 文件的内容:

我已经测试过:

  • 启用计费
  • 从头开始创建一个新项目
  • 改用 com.google.firebase:firebase-admin 包(版本 6.7.0)(结果相同)
  • 改用 Datastore(这似乎工作正常,但从 Firestore 切换需要我移动整个项目并重写大量代码)
0 投票
1 回答
987 浏览

mongodb - Kmongo (Kotlin Server + Mongo) 的 Ktor 服务器配置问题

我将 Ktor 与 KMongo 一起使用。当我在 localhost 中启动服务器并发出简单的“获取”请求时遇到问题。参考资料不是很清楚和完整 - https://litote.org/kmongo/ - 关于服务器上数据库的配置。有谁知道如何解决这个问题?我认为这是一个简单的配置问题,但我不知道如何解决它。我没有使用弹簧。

这是连接到 KmongoDB 的代码:

创建客户端实例时发生错误:

val client = KMongo.createClient().coroutine

这是堆栈错误:

0 投票
1 回答
556 浏览

kotlin - 如何增加 ktor 可接受 url 的最大长度?

现在我的ktor服务器是基于netty的。当我做长 GET 请求(大约 9300 个字符(主要在查询参数中))时,ktor 回答Unhandled: GET - /bad-request。如果我减少 url 的长度,它工作正常。

0 投票
1 回答
704 浏览

gradle - Ktor 和 Kotlin 多平台的胖 jar 问题

我有一个针对 Android 和 iOS 的 kotlin 多平台项目,并且最近集成了 ktor,以便共享库可以加载 Web 资源。它在 iOS 上运行,但在 Android 上出现此错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lio/ktor/client/HttpClientJvmKt

我猜我的构建管道正在创建一个不包含 ktor 需要的所有依赖项的 jar。所以我正在尝试使用 gradle shadow 插件(com.github.jengelman.gradle.plugins:shadow:2.0.4)制作一个胖罐子。这是我的任务:

jar 从 300Kb 跃升至 8.5Mb。

结果是一个新的错误:More than one file was found with OS independent path 'kotlinx/coroutines/CoroutineExceptionHandler.kotlin_metadata'

您会注意到我已尝试从 中排除文件shadowJar,但它不起作用。

0 投票
2 回答
676 浏览

kotlin - Kotlin Ktor API

在我的学习中,我有一个使用 Kotlin 和 Ktor 开发的小型 API。目标是在启动应用程序时显示 JSON 信息。当我们的网络浏览器中有http://127.0.0.1:8080/course/ {id} 时,应该可以看到这些信息。id 是一些课程 id,如果 id 与浏览器上显示的错误消息不同,则只能等于 1、2、3。

我今天的代码是

我对 kotlin 和 ktor 不是很友好。该应用程序目前正在运行,但是当 id 不等于 1、2、3 时,我不知道如何覆盖错误消息。如果我有http://127.0.0.1:8080/course/4例如我有一个错误说网站页面无效。我想改为显示:

有人可以帮助我吗?

谢谢

0 投票
1 回答
2538 浏览

sockets - 在 Flutter 中显示图像,通过套接字连接发送

我正在尝试使用套接字创建服务器-客户端连接。服务器只是一个回声服务器。我想在那里发送不同类型的数据。我从图像开始。我想要实现的是:

  1. 将存储在资产文件夹中的图像解析为适当的数据类型
  2. 发送到 Echo 服务器
  3. 在移动(客户端)站点上接收数据
  4. 显示以这种方式发送的图像(可以肯定的是,数据已正确发送)

我已经实现了客户端和服务器。客户端在 Flutter,服务器在 Ktor。服务器实现是从教程中复制的:https ://ktor.io/servers/raw-sockets.html 。我可以看到,我的服务器正在接收图像并将其正确发送回来,但我无法显示它。

服务器代码:

和客户:

我收到的错误是:

此外,我还有一些问题:

  1. 有没有更好的方法从 Flutter 中的资产中解析图像?

  2. 有没有办法在不添加\n图像数据末尾的情况下发送这些数据?

  3. 图片是否可能太大,我无法在一个请求中发送它?如果是,我应该更改代码以使其正常工作?将其划分为多个调用并在客户端和服务器上使用缓冲区?

  4. 我应该在服务器代码中进行哪些更改,这将允许我运行一次,并与单个客户端多次连接和断开连接?(这很烦人,每次对 Flutter 代码进行更改时,我都必须重新运行服务器以使其正常工作?

我愿意将服务器实现更改为另一种框架/语言。我想使用 Flutter,但它不一定是服务器站点上的 Ktor。只是想在行动中检查它。

0 投票
0 回答
2472 浏览

kotlin - 使用 Ktor 客户端发布带有图像的请求

我在发送一个 http 请求时遇到问题,该请求有一个 File 作为正文中的参数之一。API 返回的响应不是我所期望的,所以我认为代码有问题。

返回的响应状态是未发送文件时的预期状态。关于为什么这不起作用的任何想法?有没有其他方法可以用 Ktor 做到这一点?

0 投票
1 回答
550 浏览

kotlin - 如何在 Ktor 中使请求绑定的数据在全球范围内可用?

我正在 Ktor 中构建一个微服务。当我们在应用程序模块中工作时,Ktor 提供对call包含授权数据的对象的访问。

我的问题是我需要call从服务级别类访问对象。在 Spring 中,您可以通过访问SecurityContext全局可用的ThreadLocal. Ktor 是协程驱动的,没有这个选项。

我真的需要call通过我的服务层方法传递对象,还是在 Ktor 中有一种方法可以让您可以从任何地方访问某种“调用上下文”对象?