중간 전위로 Ultra Performance API 게이트웨이를 조립하는 개방형 프레임 워크; 이전에는 Krakend 프레임 워크 로 알려져 있으며 Krakend API 게이트웨이의 핵심 서비스.
REST API 컨텐츠 소비자 (특히 마이크로 서비스)는 종종 UI 구현을 위해 코딩되지 않은 백엔드 서비스를 쿼리합니다. 이것은 물론 좋은 관행이지만 UI 소비자는 마이크로 서비스 응답의 크기로 많은 복잡성과 부담을 겪는 구현을 수행해야합니다.
LURA는 클라이언트와 모든 소스 서버 사이에 위치한 API 게이트웨이 빌더 및 프록시 생성기로 클라이언트에 대한 모든 복잡성을 제거하는 새 계층을 추가하여 UI가 필요로하는 정보 만 제공합니다. Lura는 많은 소스의 단일 엔드 포인트 로 작용하며 응답을 그룹화, 랩, 변환 및 축소 할 수 있습니다. 또한 OAUTH 인증 또는 보안 계층 추가와 같은 기능을 확장 할 수있는 수많은 중간 전쟁 및 플러그인을 지원합니다.
LURA는 HTTP를 지원할뿐만 아니라 일반 라이브러리 세트이므로 RPC 게이트웨이를 포함하여 모든 유형의 API 게이트웨이 및 프록시를 구축 할 수 있습니다.
모바일 개발자는 4 개의 다른 통화에서 백엔드 서비스에 대한 데이터가 필요한 단일 프론트 페이지를 구성해야합니다.
1) api.store.server/products 2) api.store.server/marketing-promos 3) api.users.server/users/{id_user} 4) api.users.server/shopping-cart/{id_user}
화면은 매우 간단하며 모바일 클라이언트 는 4 개의 다른 소스에서 데이터를 검색하고 왕복을 기다린 다음 응답에서 몇 개의 필드 만 선택하면됩니다.
모바일이 단일 엔드 포인트를 호출 할 수 있다면 어떨까요?
1) lura.server/frontpage/{id_user}
그것은 루라가 당신을 위해 할 수있는 일입니다. 그리고 이것이 어떻게 보이는지입니다.
Lura는 모든 데이터를 병합하고 필요한 필드 만 반환합니다 (그래프의 크기 차이).
자세한 내용은 Lura Project 웹 사이트를 방문하십시오.
LURA 프로젝트 프레임 워크의 소스 코드. 유닉스 철학에 따라 작고 독립적이며 재사용 가능한 구성 요소를 사용하여 자신의 미들웨어와 함께 작동하고 기능을 확장하도록 설계되었습니다.
소스에서 API 게이트웨이에서 빌드 하려는 경우이 저장소를 사용하거나 다른 응용 프로그램에서 구성 요소를 재사용 하려면이 저장소를 사용하십시오.
완전히 기능적인 API 게이트웨이가 필요한 경우 아키텍처를 위해 Krakend 바이너리를 다운로드하거나 직접 구축 할 수 있습니다.
LURA 프로젝트는 강력한 프록시 또는 API 게이트웨이를 구축하기 위해 자신의 GO 애플리케이션에 포함시킬 수있는 GO 라이브러리 로 제공됩니다. 전체 예를 들어 Krakend CE 저장소를 확인하십시오.
물론 코드를 컴파일하려면 시스템에 설치해야합니다.
사용 준비된 예 :
패키지 Mainimport ( "플래그" "로그" "OS" "github.com/luraproject/lura/config" "github.com/luraproject/lura/logging" "github.com/luraproject/lura/proxy" "github.com/ luraproject/lura/router/gin ") func main () {port : = flag.int ("p ", 0, "서비스의 포트") loglevel : = flag.string ( "l", "error", "logging level") 디버그 : = flag.bool ( "d", false, "debug 활성화"구성 : = flag .string ( "c", "/etc/lura/configuration.json", "구성 파일 이름으로가는 경로") flag.parse () 파서 : = = config.newparser () serviceconfig, err : = parser.parse (*configfile) if err! = nil {log.fatal ( "error :", err.error ()). } serviceconfig.debug = serviceconfig.debug || *debugif *port! = 0 {serviceconfig.port = *port} logger, _ : = logging.newlogger ( *loglevel, os.stdout, "[lura]") routerfactory : = gin.defaultory (proxy.defaultory (logger) , logger) routerfactory.new (). run (serviceconfig) }
Lura 프로젝트의 구성 요소에 대한 자세한 내용은 프레임 워크 개요를 방문하십시오.
lura 구성 파일
여러 루라 구성 요소의 벤치 마크 결과를 확인하십시오
우리는 항상 기부금을 받게되어 기쁩니다. 질문, 제안, 버그가 있으면 문제를 열어주십시오. 코드를 제출하려면 문제를 만들고 검토 요청을 보내주십시오.
자세한 내용은 Contributing.md를 읽으십시오.
트위터에서 우리를 따르십시오 : @luraproject
슬랙 채널을 방문하십시오
문서를 읽으십시오
루라를 즐기십시오!