BoxLang에서 HTTP 요청/응답 처리하기 (13강)
BoxLang에서 HTTP 요청/응답 처리하기
웹 서버를 만들 때 가장 중요한 부분 중 하나는 **HTTP 요청**을 처리하고, 그에 대한 **응답**을 반환하는 것입니다. HTTP 요청은 클라이언트에서 서버로 보내는 데이터 요청을 의미하고, 응답은 서버가 클라이언트에게 보내는 답변입니다. BoxLang에서는 HTTP 요청과 응답을 매우 간단하게 처리할 수 있습니다. 이번 강의에서는 BoxLang에서 HTTP 요청과 응답을 처리하는 방법을 자세히 살펴보겠습니다.
HTTP 요청의 종류와 처리 방법
HTTP 요청은 여러 가지 방법(메소드)을 사용하여 서버에 데이터를 전달할 수 있습니다. 주요 HTTP 요청 메소드로는 **GET**, **POST**, **PUT**, **DELETE** 등이 있습니다. 각 메소드는 클라이언트가 서버에 요구하는 작업에 따라 다르게 처리됩니다. BoxLang에서는 이러한 요청 메소드를 쉽게 처리할 수 있습니다.
1. GET 요청 처리하기
**GET 요청**은 클라이언트가 서버로부터 정보를 요청할 때 사용합니다. 주로 데이터를 조회할 때 사용되며, URL에 포함된 정보를 서버가 처리하여 응답으로 반환합니다.
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.method == "GET" && request.path == "/hello") {
request.respond("안녕하세요, BoxLang 웹 서버!")
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 코드는 클라이언트가 "/hello" 경로로 **GET 요청**을 보내면 "안녕하세요, BoxLang 웹 서버!"라는 응답을 반환합니다. **GET 요청**은 데이터를 요청하는 방식으로 주로 사용됩니다.
2. POST 요청 처리하기
**POST 요청**은 클라이언트가 서버에 데이터를 전송할 때 사용됩니다. 주로 **폼 데이터**나 **JSON 데이터**를 서버로 전송하여 서버에서 데이터를 처리하고 응답을 받는 방식입니다. BoxLang에서는 POST 요청을 다음과 같이 처리할 수 있습니다.
import BoxLang.Json
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.method == "POST" && request.path == "/submit") {
var requestData = Json.parse(request.body)
var name = requestData["name"]
var age = requestData["age"]
var responseMessage = "이름: " & name & ", 나이: " & age
request.respond(responseMessage)
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 코드는 클라이언트가 **POST 요청**을 "/submit" 경로로 보내면, 전송된 JSON 데이터를 파싱하여 서버가 응답을 반환하는 예시입니다. 서버는 클라이언트가 보낸 데이터에 맞춰 적절한 응답 메시지를 반환합니다.
3. PUT 요청 처리하기
**PUT 요청**은 클라이언트가 서버에 존재하는 데이터를 업데이트할 때 사용됩니다. 주로 데이터의 수정 작업을 할 때 사용됩니다. BoxLang에서 **PUT 요청**을 처리하는 예시는 다음과 같습니다.
import BoxLang.Json
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.method == "PUT" && request.path == "/update") {
var requestData = Json.parse(request.body)
var userId = requestData["userId"]
var newName = requestData["newName"]
var responseMessage = "사용자 " & userId & "의 이름이 " & newName & "으로 업데이트되었습니다."
request.respond(responseMessage)
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 코드에서는 **PUT 요청**을 통해 서버로 보내진 데이터를 처리하고, 해당 데이터를 업데이트하는 방법을 보여줍니다. 클라이언트는 **userId**와 **newName**을 포함한 데이터를 서버에 전송하고, 서버는 이를 처리하여 응답을 반환합니다.
4. DELETE 요청 처리하기
**DELETE 요청**은 클라이언트가 서버의 데이터를 삭제할 때 사용됩니다. BoxLang에서 **DELETE 요청**을 처리하는 방법은 다음과 같습니다.
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.method == "DELETE" && request.path == "/delete") {
var userId = request.query["userId"]
var responseMessage = "사용자 " & userId & "가 삭제되었습니다."
request.respond(responseMessage)
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 코드는 **DELETE 요청**을 처리하는 예시입니다. 클라이언트가 **userId**를 포함하여 **DELETE 요청**을 서버에 보내면, 해당 사용자가 삭제되었다는 메시지를 반환합니다. **DELETE 요청**은 데이터 삭제 시 사용됩니다.
HTTP 응답 처리하기
HTTP 요청에 대해 적절한 응답을 반환하는 것도 매우 중요합니다. BoxLang에서는 요청에 대한 응답을 손쉽게 처리할 수 있습니다. 응답은 상태 코드와 함께 반환되며, 클라이언트는 이를 통해 요청의 성공 여부를 판단할 수 있습니다.
1. 기본 응답 처리
기본적으로 서버는 요청에 대해 성공적인 응답을 반환하거나, 오류가 발생했을 때 적절한 상태 코드와 함께 오류 메시지를 반환합니다. 아래는 간단한 응답 처리 예시입니다.
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.path == "/") {
request.respond("홈페이지에 오신 것을 환영합니다!")
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 코드는 기본적인 **응답 처리** 예시입니다. "/about" 경로가 아닌 다른 경로로 접근했을 때 404 오류 응답을 반환하고, 정상적인 요청에 대해서는 200 OK 응답을 반환합니다.
2. JSON 형식 응답
웹 서버에서 데이터 교환 시, **JSON 형식**을 많이 사용합니다. BoxLang에서는 JSON 형식으로 응답을 반환할 수 있습니다. 이를 위해서는 서버가 JSON 데이터를 문자열로 변환하여 응답으로 보내야 합니다.
import BoxLang.Json
func startServer() {
HttpServer.listen(8080)
HttpServer.onRequest(func(request) {
if (request.path == "/user") {
var userData = {
"id": 1,
"name": "홍길동",
"age": 30
}
request.respond(Json.stringify(userData))
} else {
request.respond("페이지를 찾을 수 없습니다.", 404)
}
})
}
startServer()
위 예제는 "/user" 경로에 대한 요청이 오면, 서버가 JSON 형식으로 데이터를 응답하는 예시입니다. 클라이언트는 이 데이터를 받아서 웹 애플리케이션에서 활용할 수 있습니다.
마무리 및 다음 강의 예고
이번 강의에서는 BoxLang을 사용하여 다양한 HTTP 요청 메소드(GET, POST, PUT, DELETE)를 처리하고, 적절한 HTTP 응답을 반환하는 방법을 배웠습니다. 이를 통해 웹 서버나 REST API 서버를 구축할 수 있습니다.
다음 강의에서는 **BoxLang의 세션 관리 및 쿠키 처리**에 대해 배울 예정입니다. 사용자 인증과 같은 중요한 기능을 어떻게 구현할 수 있는지 배우게 될 것입니다. 많은 기대 바랍니다!