Tag: ktor

在Ktor中测试发布请求

Ktor(kotlin web框架)有一个很棒的可测试模式,可以在unit testing中包装http请求。 他们举了一个很好的例子来说明如何在这里测试一个GET端点,但是我在使用http POST时遇到了麻烦。 我试过,但后参数似乎并没有被添加到请求: @Test fun testSomePostThing() = withTestApplication(Application::myModule) { with(handleRequest(HttpMethod.Post, “/api/v2/processing”) { addHeader(“content-type”, “application/x-www-form-urlencoded”) addHeader(“Accept”, “application/json”) body = “param1=cool7&param2=awesome4” }) { assertEquals(HttpStatusCode.OK, response.status()) val resp = mapper.readValue(response.content ?: “”) assertEquals(TriggerResponse(“cool7”, “awesome4”, true), resp) } } 有人有主意吗?

如何创建Ktor嵌入式服务器的.jar(创建可执行文件)

我对Kotlin,Ktor和Gradle很新。 能够创建嵌入式服务器,如Ktor站点中所述,使用以下代码: BlogApp.kt : package blog import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.features.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* fun Application.module() { install(DefaultHeaders) install(CallLogging) install(Routing) { get(“/”) { call.respondText(“My Example Blog sfs 122”, ContentType.Text.Html) } } } fun main(args: Array) { embeddedServer(Netty, 8080, watchPaths = listOf(“BlogAppKt”), module = Application::module).start() } 并build.gradle : group ‘Example’ […]

如何使用Ktor Kotlin / Java应用程序中的gradle构建有效的JAR文件

我一直在试图为我的Kotlin / Java Ktor项目创建一个可执行的JAR。 用我的gradle脚本创建实际的JAR很简单,但无论如何,我不能为我的生活弄清楚如何通过错误消息:“JAR文件:无法find主类路由。主键”。 我的Kotlin主函数位于包路由中名为Main.kt的文件中。 下面是我的gradle文件。 我究竟做错了什么? buildscript { ext.kotlin_version = ‘1.2.21’ ext.ktorVersion = ‘0.9.0’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: ‘java’ apply plugin: ‘kotlin’ sourceCompatibility = 1.8 compileKotlin { kotlinOptions.jvmTarget = “1.8” } compileTestKotlin { kotlinOptions.jvmTarget = “1.8” } kotlin { experimental { coroutines “enable” } } […]

将路线分割成多个文件

我是Kotlin和Ktor ,下面和我一样正常工作,现在我需要添加更多的Routes ,我怎样才能在多个文件中分割路由? package blog import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.features.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* import org.jetbrains.ktor.request.* // for recieve import org.jetbrains.ktor.util.* // for ValuesMap import org.apache.commons.mail.* fun Application.module() { install(DefaultHeaders) install(CallLogging) install(Routing) { get("/") { call.respondText(""" My Example Blog2 <form action="/contact-us" method="post"> <input name="subject" placeholder="Subject"> <br> <textarea name="message" placeholder="Your message […]

将请求发送到Ktor的另一个URL

我想发送一个HTTP请求到另一个RESTful服务并得到Ktor的响应。 文档和示例中包含有关如何执行此操作的提示。 一些帮助,将不胜感激。

ktor:如何实现“pub-> sec”路由模式

我需要简化在ktor的路由配置中集成身份验证。 同时保持公共/安全通用的路由规则。 我想堆叠所有的路线如下: 公共路线 认证拦截器 安全路线 如公共路线 POST /api/v1/story/{id}/comment GET /api/v1/story/{id} 安全路线 GET/PUT/POST/DELETE /api/v1/user/{id} PUT/POST/DELETE /api/v1/story/{id} 一般来说,公共/安全路由可以基于任何东西 – 头部,方法,前缀等。 目前,我正在叶级路由节点添加身份验证拦截器。 这很麻烦,我正在寻找一个通用的方式来实现路由,如下所示: public routes … authentication { // check if a public route was executed, if so, return // otherwise, verify the jwt token for security // if unauthenticated, return 401 else proceed } … secured […]

statusFiles应该保存在哪里?

如上所述,我试图用下面的代码使用Status Files : install(StatusPages) { statusFile(HttpStatusCode.NotFound, HttpStatusCode.Unauthorized, filePattern = "#.html") } 并保存如下文件: 但运行后,我得到了标准的404错误,这意味着该文件没有看到,我需要添加一些东西,或者我把它们保存在错误的地方?

我们如何使用自动重新加载?

试图利用自动模块重新加载功能(如此处所述),但不幸的是文档不是太有用。 它说使用配置,但配置页面是空的。 我相信你可以从这个页面传入“监视”模块列表到embeddedServer()调用,但是当我这样做,我得到以下异常: Module function provided as lambda cannot be unlinked for reload 。 所以它不会让你传入一个lambda作为一个应用程序模块,但是我不确定如何避免这样做,而访问Application方法(如routing() )。 有没有人能够最近自动重新加载工作? 如果是这样,怎么样?

Ktor中的表单身份验证

我是Kotlin和Ktor尝试查看认证部分的Ktor ,所以我得到了下面的代码。 路线“/”和“/再见”工作正常,但路线“登录”给予空白页! package blog import kotlinx.html.* import kotlinx.html.stream.* // for createHTML import org.jetbrains.ktor.application.* import org.jetbrains.ktor.auth.* import org.jetbrains.ktor.features.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.request.* // for request.uri import org.jetbrains.ktor.html.* import org.jetbrains.ktor.pipeline.* import org.jetbrains.ktor.host.* // for embededServer import org.jetbrains.ktor.netty.* // for Netty fun main(args: Array<String>) { embeddedServer(Netty, 8080, watchPaths = listOf("BlogAppKt"), module = Application::module).start() […]

找不到org.jetbrains.kotlinx:kotlinx-html:0.6.4

我试图测试HTML应用程序,我的build.gradle依赖项是: dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.jetbrains.ktor:ktor-core:$ktor_version" compile 'org.jetbrains.kotlinx:kotlinx-html:0.6.4' compile "org.jetbrains.ktor:ktor-netty:$ktor_version" compile "org.apache.commons:commons-email:1.4" compile "org.slf4j:slf4j-simple:1.7.25" compile "ch.qos.logback:logback-classic:1.2.1" testCompile group: 'junit', name: 'junit', version: '4.12' } 运行gradle构建时遇到了下面的错误: 找不到org.jetbrains.kotlinx:kotlinx-html:0.6.4 这里有什么错误?