问题标签 [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.
android - KTor URLBuilder encodedPath 与动态路径
我正在尝试使用ktor
. 我的GET
请求代码是这样的:
在某些时候,我的路径包含这样的用户 ID /users/{user_id}
。我可以在字符串中进行搜索和替换并将其替换user_id
为实际值,但是还有其他方法可以做到这一点吗?任何ktor
特定的方式。
例如,Retrofit
我们有这个:
编辑:添加更多代码
request.path?.forEach { requestPath = requestPath.replace(it.first, it.second)}
替换任何运行时路径值。
authentication - 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?
所以,我正在构建一个 API 系统。我想使用 KeyCloak 进行身份验证和用户管理,因为它有一个很好的访问控制。我正在将它与 Ktor 集成,我希望我的用户使用他们自己的 UI。或者至少,我想制作 UI。
我读过主题定制,但这不是我想要的。我还了解到 KeyCloak UI 紧密集成在他们的代码中。我只是希望知道至少当其中一个客户端应用程序是移动应用程序时,我是否可以将例如 android UI 用于整个登录流程?
如果不可能,我认为不太可能,是否有任何其他用于访问控制的库或框架,最好是与 Ktor 一起使用的库或框架?
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 切换需要我移动整个项目并重写大量代码)
mongodb - Kmongo (Kotlin Server + Mongo) 的 Ktor 服务器配置问题
我将 Ktor 与 KMongo 一起使用。当我在 localhost 中启动服务器并发出简单的“获取”请求时遇到问题。参考资料不是很清楚和完整 - https://litote.org/kmongo/ - 关于服务器上数据库的配置。有谁知道如何解决这个问题?我认为这是一个简单的配置问题,但我不知道如何解决它。我没有使用弹簧。
这是连接到 KmongoDB 的代码:
创建客户端实例时发生错误:
val client = KMongo.createClient().coroutine
这是堆栈错误:
kotlin - 如何增加 ktor 可接受 url 的最大长度?
现在我的ktor服务器是基于netty的。当我做长 GET 请求(大约 9300 个字符(主要在查询参数中))时,ktor 回答Unhandled: GET - /bad-request
。如果我减少 url 的长度,它工作正常。
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
,但它不起作用。
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例如我有一个错误说网站页面无效。我想改为显示:
有人可以帮助我吗?
谢谢
sockets - 在 Flutter 中显示图像,通过套接字连接发送
我正在尝试使用套接字创建服务器-客户端连接。服务器只是一个回声服务器。我想在那里发送不同类型的数据。我从图像开始。我想要实现的是:
- 将存储在资产文件夹中的图像解析为适当的数据类型
- 发送到 Echo 服务器
- 在移动(客户端)站点上接收数据
- 显示以这种方式发送的图像(可以肯定的是,数据已正确发送)
我已经实现了客户端和服务器。客户端在 Flutter,服务器在 Ktor。服务器实现是从教程中复制的:https ://ktor.io/servers/raw-sockets.html 。我可以看到,我的服务器正在接收图像并将其正确发送回来,但我无法显示它。
服务器代码:
和客户:
我收到的错误是:
此外,我还有一些问题:
有没有更好的方法从 Flutter 中的资产中解析图像?
有没有办法在不添加
\n
图像数据末尾的情况下发送这些数据?图片是否可能太大,我无法在一个请求中发送它?如果是,我应该更改代码以使其正常工作?将其划分为多个调用并在客户端和服务器上使用缓冲区?
我应该在服务器代码中进行哪些更改,这将允许我运行一次,并与单个客户端多次连接和断开连接?(这很烦人,每次对 Flutter 代码进行更改时,我都必须重新运行服务器以使其正常工作?
我愿意将服务器实现更改为另一种框架/语言。我想使用 Flutter,但它不一定是服务器站点上的 Ktor。只是想在行动中检查它。
kotlin - 使用 Ktor 客户端发布带有图像的请求
我在发送一个 http 请求时遇到问题,该请求有一个 File 作为正文中的参数之一。API 返回的响应不是我所期望的,所以我认为代码有问题。
返回的响应状态是未发送文件时的预期状态。关于为什么这不起作用的任何想法?有没有其他方法可以用 Ktor 做到这一点?
kotlin - 如何在 Ktor 中使请求绑定的数据在全球范围内可用?
我正在 Ktor 中构建一个微服务。当我们在应用程序模块中工作时,Ktor 提供对call
包含授权数据的对象的访问。
我的问题是我需要call
从服务级别类访问对象。在 Spring 中,您可以通过访问SecurityContext
全局可用的ThreadLocal
. Ktor 是协程驱动的,没有这个选项。
我真的需要call
通过我的服务层方法传递对象,还是在 Ktor 中有一种方法可以让您可以从任何地方访问某种“调用上下文”对象?