yuns

KTor 연결하기(2) 본문

Kotlin실습

KTor 연결하기(2)

yuuuun 2023. 12. 7. 01:33
반응형

추가적으로 실행할 수 있는 실습

IntelliJ에서 ktor 실습하기

디폴트 포트를 바꾸기 위해서는, src/main/kotlin/com.example/pulgins/Application.kt의 파일에서 포트 번호를 바꾸기

fun main() {
    embeddedServer(Netty, port = 1111, host = "0.0.0.0", module = Application::module)
        .start(wait = true)
}

fun Application.module() {
    configureHTTP()
    configureRouting()
}

YAML파일로 다운받기

project를 다운 받을 때 default로 Code File을 다운 받을 수 있음

[Adjust project settings]를 누르면, [Configuration in] tab에서 YAML file를 선택할 수 있음

Intellij 에서 프로젝트를 연 뒤, src/main/kotlin/com/example/Application.kt 파일을 보면, 아래와 같이 코드가 작성되어 있는 것을 확인할 수 있다. 이는 이 페이지 첫 번째 항목인 IntelliJ에서 ktor 실습하기 항목에 있는 Application.kt파일의 코드와 비교했을 때, 포트 번호와 ip 주소가 없는 것을 확인할 수 있다.

이는 yaml 파일에 포트가 저장되어 있는 것을 확인할 수 있다. (즉, yaml파일에 저장해 놔서 정보은닉(?)을 하는 것으로 추정)


Adding a new HTTP Endpoint

기존의 폴더에서 src/main/kotlin/com.example/puglins/Routing.kt파일을 열어보면 confiureRouting()함수가 존재

기존에 홈페이지에는 아래와 같이 Hello World!만 입력되어 있는 것을 확인할 수 있는데,

아래와 같이 코드를 추가하고 Application.kt 파일을 다시 빌드한다. (참고로, 본문에 있는 ContentType를 사용하기 위해 import io.ktor.http.*로 클래스를 임포트한다.)

import io.ktor.http.*


fun Application.configureRouting() {
    routing {
        get("/") {
            call.respondText("Hello World!")
        }
        // Add the five lines below
        get("/test1") {
            val text = "<h1>Hello From Ktor</h1>"
            val type = ContentType.parse("text/html")
            call.respondText(text, type)
        }
    }
}

그 뒤, get()함수 안에 있는 test1를 주소 뒤에 입력한 http://0.0.0.0:1111/test1 를 입력하면 아래와 같이 Hello From Ktor이 뜨는 것을 확인할 수 있다.

Tools > HTTP Client > Create Request in HTTP Client를 누르게 되면

요런 파일이 하나 뜬다.

여기에 코드를 수정해보았다.

GET http://0.0.0.0:1111

###
GET http://0.0.0.0:1111/test1

두 번째 GET 명령문 위에 ###를 쳐야 독립적으로 두 명령어를 모두 처리하는 것으로 보였다. ###를 생략했을 때는 GET 함수를 인식하지 못한 것으로 보아, 여러 명령어를 입력하기 위해 ###가 필요한 것으로 보인다.

test-api.http 파일을 실행하니, 아래와 같이 결과가 보였다.


 

 

반응형

'Kotlin실습' 카테고리의 다른 글

[Kotlin Error] libs warning/error  (0) 2024.01.23
KTOR 연결하기  (1) 2023.12.07
Comments