Lua에서 기본 REST API를 빌드하는 방법 - Milua 마이크로 프레임워크
전주곡
저는 최근에 REST API를 구축하고 싶었던 새 프로젝트를 시작했습니다. 내가 고려한 대안과 이를 거부한 이유는 다음과 같습니다.
Python의 Flask과 같은 다른 언어로 더 친숙한 프레임워크를 사용합니다. 내 프로젝트에는 이미 Lua가 필요했고 다양한 기술을 사용했기 때문에 간단하게 유지하고 완전히 새로운 언어와 프레임워크를 목록에 추가하지 않는 것이 좋습니다.
Lapis 과 같은 Lua의 기존 프레임워크를 사용합니다. 여기서 문제는 Lapis가 Nginx와 같은 타사 소프트웨어에 의존하므로 종속성 목록이 계속 증가한다는 것입니다. 이것은 더 무거운 프로젝트에서는 문제가 되지 않지만 여기에 필요한 API는 정말 작기 때문에 단일 기술 이상의 과잉 사용을 고려할 것입니다.
Cover image by aloiswohlfahrt from Pixabay
밀루아
나는 내가 정말로 원했던 것이 순수한 Lua 솔루션이라는 것을 분명히 느꼈습니다. 약간의 연구 끝에 나는 사실상의 표준을 찾지 못했지만(내가 틀렸을 수도 있음), duarnimator의
http
라이브러리를 찾았습니다. 윤곽.Flask 사용 경험에 영감을 받아 Milua를 만들었습니다.
미구엘MJ / 밀루아
웹 개발을 위한 Lua 마이크로 프레임워크
설치
나는 lua 패키지 관리자인
luarocks
의 작동 방식을 배웠고 첫 번째 버전을 게시했습니다. 따라서 다음을 통해서만 종속성과 함께 설치할 수 있습니다.luarocks install milua
예
그 직후에 리포지토리에 제공되는 예제를 사용해 볼 수 있습니다.
local app = require "milua"
-- Basic example
app.add_handler(
"GET",
"/",
function()
return "<h1>Welcome to the handsome server!</h1>"
end
)
-- Example capturing a path variable
app.add_handler(
"GET",
"/user/...",
function (captures, query, headers)
local username = captures[1]
local times = query.times or 1
return "The user " .. username .. " is" ..
(" very"):rep(times) .. " handsome"
end
)
app.start()
이를 실행하려면 Milua를 설치한 후 스크립트를 실행하기만 하면 됩니다. 그런 다음
curl
로 테스트할 수 있습니다.$ curl localhost:8800/
<h1>Welcome to the handsome server!</h1>
$ curl localhost:8800/user/foo
The user foo is very handsome
$ curl localhost:8800/user/foo?times=3
The user foo is very very very handsome
특징
현재 버전 0.1에서
milua
모듈은 두 가지 기능만 제공합니다.add_handler(method, pattern, handler)
메서드와 경로를 핸들러에 연결합니다.handler
함수는 다음 인수를 수락해야 합니다.captures
: 패턴 문자열에서 세 개의 점( ...
)으로 지정된 경로의 변수 필드가 포함된 배열입니다. 사실, 이 패턴은 약간의 구문 설탕이 포함된 일반 Lua 패턴일 뿐이므로 경로에서 원하는 모든 것을 캡처하고 원하는 만큼 구체적으로 지정할 수 있습니다. /([0-9]+)
는 숫자 값에 대한 경로를 캡처합니다. /admin_...
접두사 admin_
없이 대상을 캡처합니다. query
: URL에 쿼리의 키-값 쌍이 있는 테이블입니다(?
뒤에 오는 옵션). headers
: HTTP 요청의 헤더입니다. body
: HTTP 요청의 본문입니다. start(config)
여기서 config에는 응용 프로그램을 실행하기 위한 host
및 port
가 포함되어 있습니다. 결론
오류 처리기 추가(예:
404.html
페이지 허용) 또는 정적 파일에 대한 디렉터리 지정과 같이 복잡성을 동일한 수준으로 유지하는 몇 가지 수정을 위한 여지가 여전히 있습니다. 예를 들어 템플릿 기능은 없지만(아마도 미래에) 원하는 것을 요구하고 앱에서 사용할 수 있습니다. 그러나 지금은 최소한의 특성 덕분에 목적을 달성하고 던지고 싶은 모든 것과 호환됩니다.나는 여전히 Lua와 그 도구에 대해 배우고 있으며 미래에 이 언어에 대해 더 많이 쓸 수도 있습니다. Lua에 대한 귀하의 경험은 어떻습니까? 이전에 웹 개발을 위해 사용한 적이 있습니까? 나는 당신이 가진 모든 의견을 읽을 것입니다!
추천도서
Prolog의 데이터 구조 - 시작 위치
MiguelMJ ・ 2021년 6월 15일 ・ 4분 읽기
#prolog
#datastructures
#resources
StackOverflow에서 답변을 얻는 방법
MiguelMJ ・ 2월 6일 ・ 5분 읽기
#beginners
#codenewbie
#productivity
Reference
이 문제에 관하여(Lua에서 기본 REST API를 빌드하는 방법 - Milua 마이크로 프레임워크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/miguelmj/how-to-build-a-basic-rest-api-in-lua-milua-micro-framework-332h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)