VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
이 가이드는 프리뷰 기능을 사용합니다. 서버를
--vsql_allow_preview_extensions=ON으로 시작하세요. 그렇지 않으면 INSTALL EXTENSION이 거부됩니다.vsql_rest 확장은 대신 서버 프로세스 안에서 그 테이블을 제공하므로, 두 번째 프로세스도 새 배포도 없습니다.
기본값은 네트워크가 아니라 개발자 머신을 위해 만들어졌습니다. 어디에든 열기 전에 아래의 “포트를 노출하기 전에”를 읽으세요.
켜기
vsql_rest.schema_ttl초(기본값 60) 동안 캐시하므로, 그 뒤에 만든 테이블은 캐시가 만료될 때까지 table not found로 응답합니다.
읽기
테이블이 경로이고, 쿼리 문자열이 필터링을 합니다. 각 필터는column=operator.value입니다:
or=(...)로 조건을 결합하세요:
limit과 offset으로 페이지를 넘기세요:
eq, neq, lt, lte, gt, gte, like, cs_like, in, is입니다. in은 ?id=in.(1,3)처럼 목록을 받고, is는 ?price=is.null 또는 ?price=is.not.null처럼 null을 받습니다. limit이 없는 요청은 최대 vsql_rest.max_rows행을 반환하며, 이 값은 1000에서 시작합니다.
허용 목록
allowed_tables에 없는 테이블은 API 입장에서 존재하지 않습니다:
테이블별 메서드 제한
table_methods는 각 테이블이 받아들이는 HTTP 메서드를 table:METHOD,METHOD 형식으로, 테이블 사이에 |를 두고 지정합니다:
동작 지켜보기
다섯 개의 상태 카운터가 리스너에 대해 보고하며, 실제로 바인딩한 포트도 포함합니다:http_port는 아무것도 수신 대기하지 않을 때 0으로 읽히며, 리스너가 시작되었는지 확인하는 가장 빠른 방법입니다. vsql_rest.port를 0으로 설정하면 운영 체제에 포트 선택을 맡기고, 어떤 포트를 골랐는지는 이 카운터에서 읽습니다.
포트를 노출하기 전에
기본값은 문을 열어 두며, 각각은 따로 보면 합리적입니다.require_auth는 OFF에서 시작하므로 어떤 요청도 토큰을 지니거나 필요로 하지 않습니다. 빈 allowed_tables는 스키마 전체를 공개합니다. 빈 table_methods는 DELETE를 포함한 모든 메서드를 허용하며, 그 상태의 리스너에 대한 DELETE는 성공합니다:
ssl_cert와 ssl_key를 설정해 HTTPS로 제공하세요. 바인드 주소 설정은 없고, 리스너는 시작하는 순간부터 모든 인터페이스에 바인딩하므로, 방화벽에서 포트를 막고 리버스 프록시만 도달하게 하세요.
문제 해결
함께 보기
- vsql_rest — 확장이 추가하는 모든 설정이 있는 참조 페이지
- SQL에서 HTTP 요청 보내기 — 같은 서버가 응답하는 대신 밖으로 호출하기
- 외부 API 데이터로 행 보강하기 — 쿼리를 다른 사람의 API와 결합하기
- MySQL 보안 강화 — 포트에 도달할 수 있게 되기 전에 더 닫아야 할 것