HttpService를 사용하면 외부 Http 서버와 통신할 수 있습니다. 외부 API 서버에서 데이터를 가져와 월드에 활용하거나, 데이터를 외부 API 서버로 보낸 후 응답받은 데이터를 월드에 활용할 수 있습니다.
사용 방법
기능
설명
GetAsync(url)
url의 응답 받기
PostAsync(url, data)
url로 data를 보내고 응답 받기
JSONEncode(tableData)
table 형식의 tableData를 JSON string 형태로 변환 및 반환
JSONDecode(json)
JSON 형식의 JSON을 table 형태로 변환 및 반환
URL에서 응답 받기
baseUrl 변수에 입력된 url 링크에 HTTP GET 요청을 보내고 응답을 받아 response 변수에 저장하고 print하는 예시 코드입니다.
-- HttpService 불러오기
local HttpService = game:GetService("HttpService")
local baseUrl = "HTTP URL을 입력하세요"
local success, errorMessageOrResult, response = nil, nil, nil
local function HttpGet()
-- 비동기 요청이 실패하거나 오류가 발생할 수 있으므로 pcall()로 예외 처리
success, errorMessageOrResult = pcall(function()
-- "baseUrl" 주소로 HTTP GET 요청을 보낸 후 받은 응답을 "response" 변수에 저장
response = HttpService:GetAsync(baseUrl)
end)
local messageSuccess = string.format("success: %s", success)
local messageErrorOrResult = string.format("errorMessageOrResult: %s", errorMessageOrResult)
local messageResponse = string.format("response: %s", response)
print("messageSuccess: ", messageSuccess)
print("messageErrorOrResult: ", messageErrorOrResult)
print("messageResponse: ", messageResponse)
end
URL에 JSON 데이터 보내고 응답 받기
baseUrl 변수에 입력된 url 링크에 월드에서 사용하던 table 데이터를 JSON으로 인코딩하여 HTTP POST 요청을 보내고 응답을 받아 response 변수에 저장하고 print하는 예시 코드입니다.
-- HttpService 불러오기
local HttpService = game:GetService("HttpService")
local baseUrl = "HTTP URL을 입력하세요"
local success, errorMessageOrResult, response = nil, nil, nil
local function HttpPost()
-- URL로 보낼 데이터 정의
local data =
{
["message"] = "Hello OVERDARE!",
["data"] = 10,
}
-- data를 JSON으로 인코딩
local jsonData = HttpService:JSONEncode(data)
-- 비동기 요청이 실패하거나 오류가 발생할 수 있으므로 pcall()로 예외 처리
success, errorMessageOrResult = pcall(function()
-- "baseUrl" 주소로 "jsonData" 데이터와 함께 HTTP POST 요청을 보낸 후 받은 응답을 "response" 변수에 저장
response = HttpService:PostAsync(baseUrl, jsonData)
end)
local messageSuccess = string.format("success: %s", success)
local messageErrorOrResult = string.format("errorMessageOrResult: %s", errorMessageOrResult)
local messageResponse = string.format("response: %s", response)
print("messageSuccess: ", messageSuccess)
print("messageErrorOrResult: ", messageErrorOrResult)
print("messageResponse: ", messageResponse)
end
URL에서 응답 받은 JSON 데이터 활용하기
baseUrl 변수에 입력된 url 링크에 HTTP GET 요청을 보내고 응답을 받아 response 변수에 저장하고 응답받은 데이터가 JSON이라는 가정 하에 table로 Decoding한 후 print하는 예시 코드입니다.
-- HttpService 불러오기
local HttpService = game:GetService("HttpService")
local baseUrl = "HTTP URL을 입력하세요"
local success, errorMessageOrResult, response = nil, nil, nil
local function HttpGetApplication()
-- 비동기 요청이 실패하거나 오류가 발생할 수 있으므로 pcall()로 예외 처리
success, errorMessageOrResult = pcall(function()
-- "baseUrl" 주소로 HTTP GET 요청을 보낸 후 받은응답을 "response" 변수에 저장
response = HttpService:GetAsync(baseUrl)
-- JSON 문자열을 디코딩하여 table 형식으로 "response" 변수에 저장
response = HttpService:JSONDecode(response)
end)
local messageSuccess = string.format("success: %s", success)
local messageErrorOrResult = string.format("errorMessageOrResult: %s", errorMessageOrResult)
local messageResponse = string.format("response.data: %s", response.data)
print("messageSuccess: ", messageSuccess)
print("messageErrorOrResult: ", messageErrorOrResult)
print("messageResponse: ", messageResponse)
end
주의사항
사용하시는 API 주소 마다 분당 요청 수 등의 제한이 있을 수 있습니다. 원하는 기능 구현에 있어 반드시 해당 API 주소의 요청 수를 확인하시기 바랍니다.