2017-11-29 19 views
0

내 응용 프로그램이 여러 마이크로 서비스로 구성되어 있으며 현재 API 게이트웨이 및 권한 부여 마이크로 서비스에 대해 작업 중입니다. 들어오는 각 요청은이 작업을 수행 할 수있는 사용자의 권한에 따라 유효성이 검사되고 권한이 부여됩니다. 동사 (GET, POST, PUT, DELETE)와 ENDPOINT (/ interpretations/q44nAj91aH6nd/)로 구성된 활동이 있습니다.MySQL 필드에 정규식 패턴을 저장하고 입력을 검사하려면 어떻게해야합니까?

모든 활동을 나열한 MySQL 표가 있으며 사용자 요청의 끝점을 일치 항목과 일치시키고 싶습니다 테이블에서 활동 (행). 나는이 주어진 요청의 엔드 포인트에 대한 행이 일치 수있는 방법을 내 질문은

CREATE TABLE `activities` (
     `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
     `url` varchar(255) NOT NULL DEFAULT '', 
     `method` varchar(20) NOT NULL DEFAULT 'GET', 
     `url_regex` varchar(255) DEFAULT '', 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

    INSERT INTO `activities` (`id`, `url`, `method`, `url_regex`) 
    VALUES 
     (1,'/interpretations/','POST',''), 
     (2,'','GET','/interpretations/[a-Z0-9]+/'); 

: /interpretations/q44nAj91aH6nd/ (정규식 패턴 /interpretations/[a-Z0-9]+/과 일치해야합니다). 나는 아래하려고하면

, 그것은 작동하지 않습니다 다음 RLIKE 및 입력 데이터가 이전되어 후에 MYSQL에서 정규식 패턴이 올

SELECT * FROM `activities` WHERE `url_regex` RLIKE "/interpretations/q44nAj91aH6nd/"; 

# also tried inverting 

SELECT * FROM `activities` WHERE "/interpretations/q44nAj91aH6nd/" RLIKE `url_regex`; 

답변

1

, 따라서 :

SELECT * FROM `activities` WHERE "/interpretations/q44nAj91aH6nd/" RLIKE `url_regex`; 

PS, 정규 표현식에 문자 범위에 구문 오류가 있습니다. 대신이 시도 :

/interpretations/[a-zA-Z0-9]+/ 

가 먼저 정규 표현식에 테스트를 연속 문자열로 입력과 패턴을 전달하려면 :

SELECT * FROM `activities` WHERE '/interpretations/q44nAj91aH6nd/' RLIKE '/interpretations/[a-Z0-9]+/'; 

는 "잘못된 문자 범위"를 제공합니다. 인수의 순서에 대해 http://sqlfiddle.com/#!9/82e917/2

+0

여전히 작동하지 않습니까? 그때 패턴이 틀렸어? – Lazhar

+0

예; 이 –

0

RLIKE 염려 : 당신은 패턴 오류가 쿼리를 중단하지 않기 때문에, 그냥에서 행을 사용할 수

일부 테스트/데모 방울, 쿼리이 표시되지 않습니다 . 시도 :

SELECT * 
FROM `activities` 
WHERE '/interpretations/q44nAj91aH6nd/' RLIKE url_regex; 

변경을 정규 표현식으로 :

INSERT INTO `activities` (`id`, `url`, `method`, `url_regex`) 
    VALUES (1, '/interpretations/', 'POST', ''), 
      (2, '', 'GET', '/interpretations/[a-zA-Z0-9]+/'); 

Here

는 SQL 바이올린입니다.

+0

에 대한 정보를 제공하기 위해 수정 된 게시물이 질문을 편집했습니다. 여전히 작동하지 않습니다. 그때 패턴이 틀렸어? – Lazhar