KTor 연결하기(2)
추가적으로 실행할 수 있는 실습
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 파일을 실행하니, 아래와 같이 결과가 보였다.