StackOverflow의 2022년 설문 조사에 따르면 전문 개발자의 46%가 MySQL을 작업 공간에서 가장 많이 사용하는 데이터베이스로 평가했습니다. 프로그래머로서 우리는 쉽게 사용할 수 있고 견고하며 잘 테스트된 코드를 반복적으로 작성하는 데 신경을 써서는 안 됩니다.
이 시점까지의 구현 프로세스가 단순하고 반복적이며 오류와 감독이 발생하기 쉬움에도 불구하고 이 문제는 REST API 공간에 여전히 남아 있습니다. 이러한 감독에는 여러 가지 이유로 비용이 많이 듭니다.
다행히도 우리 프로그래머들에게 DreamFactory 플랫폼은 API 문서화, 생성 및 보안을 위한 중앙 집중식 솔루션을 제공함으로써 이러한 모든 번거로움과 그 이상으로부터 팀을 쉽게 해방시킬 수 있습니다. 이 튜토리얼에서는 MySQL 데이터베이스용 REST API를 구축, 보안 및 배포하는 것이 얼마나 쉬운지 배우게 됩니다.
목차
MySQL API는 개발자가 애플리케이션이나 스크립트에서 프로그래밍 방식으로 MySQL 데이터베이스와 상호 작용할 수 있도록 하는 기능, 프로토콜 및 도구 세트입니다.
이 API는 애플리케이션이 MySQL 데이터베이스에 쿼리를 보내고, 데이터를 검색하고, 데이터를 수정하고, 다양한 데이터베이스 작업을 수행할 수 있는 방법을 제공합니다. 애플리케이션 코드와 데이터베이스 서버 사이의 중개 계층 역할을 하여 원활한 통신과 데이터 조작을 촉진합니다.
일반적인 MySQL API에는 MySQL Connector/ODBC, MySQL Connector/J(Java용), MySQLi(PHP용) 등이 포함되며 각각 특정 프로그래밍 언어 또는 프레임워크에 맞게 조정됩니다.
MySQL API는 애플리케이션과 MySQL 데이터베이스 간의 상호 작용을 촉진하여 소프트웨어 개발에서 중추적인 역할을 합니다.
이러한 API는 '중간' 역할을 하여 데이터베이스 작업의 복잡성을 추상화하고 개발자에게 표준화된 인터페이스를 제공합니다. 그 중요성은 애플리케이션이 데이터를 효율적으로 저장, 검색, 수정 및 관리할 수 있도록 하는 데 있습니다.
MySQL API는 다양한 프로그래밍 언어 및 프레임워크와의 호환성을 제공하므로 개발자는 선호하는 도구를 사용하여 MySQL로 작업할 수 있습니다. SQL 주입과 같은 일반적인 보안 취약성으로부터 보호하기 위해 준비된 명령문 및 입력 유효성 검사와 같은 기능을 제공하여 보안을 강화합니다.
연결 풀링 및 캐싱과 같은 성능 최적화 기능은 데이터베이스 상호 작용 효율성을 높이는 데 도움이 됩니다. MySQL API가 제공하는 이식성은 애플리케이션이 대대적인 코드 점검 없이 잠재적으로 다른 데이터베이스 시스템으로 전환할 수 있다는 것을 의미하며, 확장성 덕분에 증가된 워크로드를 처리하는 데 적합합니다.
MySQL API는 MySQL 개발자 커뮤니티의 광범위한 지원을 통해 개발자를 위한 풍부한 리소스, 라이브러리 및 도구를 보장합니다.
DreamFactory는 MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB 등 다양한 데이터베이스에 대한 REST API를 생성할 수 있습니다.
이렇게 하려면 DreamFactory 관리 인터페이스에 로그인하고 서비스로 이동한 다음 왼쪽에 있는 만들기 버튼을 클릭하여 서비스 생성 인터페이스로 들어갑니다. 화면. 여기에서 API 생성 >으로 이동하여 MySQL 서비스 유형을 선택합니다. 데이터베이스를 선택한 다음 데이터베이스 옵션에서 MySQL을 선택하세요(아래 스크린샷 참조).
다음으로 이름, 라벨, 설명을 입력하라는 메시지가 표시됩니다(스크린샷 아래). 후자 두 개는 관리 인터페이스 내에서 참조 목적으로만 사용되지만 이름 값은 API URL의 일부로 구성되므로 곧 알게 되겠지만 특히 중요합니다.
마지막으로 구성 탭을 클릭하세요. 여기서는 데이터베이스 연결 자격 증명을 제공하라는 메시지가 표시됩니다(아래 스크린샷 참조). 이것은 전혀 새로운 것이 아닙니다. 호스트 이름, 사용자 이름, 비밀번호 및 데이터베이스를 제공합니다. 또한 선택적으로 드라이버 옵션, 시간대, 캐싱 기본 설정과 같은 기타 구성 특성을 지정할 수 있습니다. 이 튜토리얼에서는 필수 필드만 입력하고 선택 기능은 그대로 두겠습니다.
자격증명을 입력한 후 화면 하단의 저장 버튼을 누르면 REST API가 생성되었다고 믿거나 말거나가 됩니다!
API와 함께 DreamFactory는 API에 대한 광범위한 대화형 Swagger 문서 세트도 자동 생성합니다. 관리 인터페이스 상단에 있는 API 문서 탭을 클릭한 후 새로 생성된 서비스를 이름별로 선택하여 액세스할 수 있습니다. 저장 프로시저 실행, CRUD 작업 수행, 뷰 쿼리 등에 유용한 44개의 엔드포인트가 제공됩니다. 예를 들어 다음 스크린샷은 새로 생성된 MySQL REST API 엔드포인트의 작은 하위 집합을 보여줍니다!
DreamFactory에서 생성된 모든 API는 최소한 API 키로 자동 보호됩니다. 선택적으로 기본 인증, SSO 또는 디렉터리 서비스(LDAP 및 Active Directory)를 사용하여 사용자를 인증할 수 있습니다. 또한 각 API 키 및/또는 사용자를 사용자가 액세스할 수 있는 서비스를 정확하게 결정하는 *역할*과 연결할 수 있습니다. 그뿐만 아니라 특정 데이터베이스 테이블이나 테이블 집합, 특정 엔드포인트에 대한 상호 작용을 제한하고 허용되는 HTTP 메서드도 제한할 수 있습니다.
API를 대신하여 MySQL 데이터베이스와 상호 작용하는 사용자를 보호하는 것은 API 개발 및 통합 프로세스에서 매우 중요한 부분입니다. MySQL 권한 및 DreamFactory를 통한 향상된 데이터 보안에 대한 다른 권장 사항을 확인하세요
예를 들어, 새로 생성된 MySQL API 내에서 읽기 전용 방식으로 단일 테이블과 상호 작용하도록 관련 API 키를 제한하는 새 역할을 생성해 보겠습니다. 이렇게 하려면 역할 탭으로 이동하여 생성 버튼을 클릭하세요. 아래 스크린샷에 있는 인터페이스가 표시됩니다.
다음으로 액세스 탭을 클릭하세요. 여기서 역할이 수행할 수 있는 작업을 정의합니다. 아래 스크린샷에서는 역할을 MySQL 서비스와의 상호 작용으로 제한했으며 해당 서비스 내에서 역할은 GET 메서드를 통해 _table/employees* 엔드포인트와만 상호 작용할 수 있음을 알 수 있습니다. 우리는 봉쇄 중이에요!
저장 버튼을 클릭하여 역할을 저장하세요. 이제 새 API 키를 생성하고 키를 이 역할과 연결하겠습니다. 그렇게 하려면 API 유형 드롭다운 아래에 있는 API 키 탭을 클릭하고 API 키를 선택한 다음 '+' 버튼을 클릭하세요. 새 앱에 이름과 설명을 할당하고 활성으로 설정되었는지 확인한 다음 아래 스크린샷에서와 마찬가지로 MySQL의 기본 역할을 할당합니다. 앱 위치 설정과 관련하여 웹이나 모바일 애플리케이션 또는 다른 웹 서비스를 통해 API와 상호 작용할 계획이라면 "저장소 필요 없음"을 선택하는 것이 좋습니다.
저장 버튼을 누르면 새 API 키를 복사할 수 있는 앱 색인 화면으로 돌아갑니다! 나중에 참조할 수 있도록 키를 텍스트 파일에 복사하세요.
DreamFactory 관리 인터페이스 외부에서 API를 테스트하기 전에 마지막 구성 단계가 하나 있습니다. 새 API에 대해 CORS(Cross-Origin Resource Sharing)를 활성화해야 합니다. 구성 드롭다운에서 CORS를 선택하여 찾을 수 있습니다. 시연을 위해 아래 스크린샷과 같이 기본 CORS 설정을 지정하면 모든 네트워크 주소의 API 제한 트래픽을 허용할 수 있습니다.
API가 생성되고, API 키와 관련 역할이 생성되고, CORS가 구성되면 클라이언트를 통해 API와 상호작용을 시작할 준비가 된 것입니다! 저는 MacOS에서 HTTP 테스트를 위해 Insomnia를 사용하는 것을 좋아하지만 또 다른 인기 있는 솔루션은 Postman입니다.
다음 스크린샷에서는 Insomnia를 사용하여 GET 요청을 통해 /api/v2/_table/employees 엔드포인트에 접속하고 있습니다.
GET 메서드를 사용하여 /api/v2/_table/employees/* 엔드포인트와만 상호작용하도록 이 API 키를 잠갔다는 점을 기억하세요. 그렇다면 이 테이블에 POST를 시도하면 어떻게 될까요? 다음 스크린샷에 표시된 대로 401(승인되지 않음) 상태 코드가 반환됩니다.
물론 DreamFactory가 유일한 솔루션은 아닙니다. MySQL REST API를 생성할 수 있는 또 다른 방법은 수동으로 코딩하는 것입니다. 그러나 시간이 상당히 오래 걸리고 더 어렵습니다. API 보안과 같이 API를 직접 제작할 때 걱정해야 할 다른 문제도 있습니다. 다음 API 코딩을 수동으로 시작하는 방법에 대한 몇 가지 간단한 팁은 다음과 같습니다.
MySQL REST API를 구축하는 첫 번째 단계는 클라이언트에서 들어오는 HTTP 요청을 처리하고 적절한 콘텐츠로 응답하는 Apache 또는 Nginx와 같은 웹 서버를 설정하는 것입니다. 또한 데이터를 검색하거나 저장하기 위해 MySQL과 상호 작용할 수 있는 서버측 스크립팅 언어인 PHP를 서버에 설치해야 합니다. 마지막으로, 테이블에 데이터를 저장하고 관리할 수 있는 관계형 데이터베이스 관리 시스템인 MySQL을 설치해야 합니다. 이러한 구성 요소를 모두 설정하고 나면 REST API 구축을 시작할 준비가 된 것입니다.
데이터베이스는 열과 행이 있는 테이블과 같이 구조화된 방식으로 구성된 관련 데이터의 모음입니다. MySQL은 데이터베이스와 테이블을 생성하고 관리할 수 있는 널리 사용되는 관계형 데이터베이스 관리 시스템입니다.
MySQL에서 데이터베이스를 생성하려면 MySQL 명령줄 인터페이스에서 CREATE DATABASE 명령을 사용하거나 phpMyAdmin과 같은 도구를 사용할 수 있습니다.
PHP에서 MySQL 데이터베이스에 연결하려면 MySQLi 또는 PDO와 같은 여러 확장 중 하나를 사용할 수 있습니다. 연결을 설정한 후에는 SQL 쿼리를 실행하여 데이터베이스에서 데이터를 검색할 수 있습니다. SQL 쿼리는 API를 통해 노출하려는 데이터를 검색하도록 설계되어야 하며, SQL 주입 공격을 방지하기 위해 매개변수화되어야 합니다.
데이터베이스에서 데이터를 검색한 후에는 PHP에 내장된 기능을 사용하여 JSON으로 형식을 지정할 수 있습니다. JSON은 구문 분석이 쉽고 다양한 프로그래밍 언어에서 지원되는 경량 데이터 형식입니다.
PDO는 PHP에서 데이터베이스에 액세스하기 위한 일관된 인터페이스를 제공하는 강력하고 유연한 확장입니다. PDO는 MySQL을 비롯한 다양한 데이터베이스 드라이버와 함께 사용할 수 있으며, 준비된 명령문, 매개변수 바인딩 등의 기능을 제공하여 SQL 주입 공격을 방지하는 데 도움이 됩니다.
MySQL에서 PDO를 사용하려면 새 PDO 개체를 생성하고 데이터베이스에 대한 연결 세부 정보를 전달해야 합니다. 그런 다음 prepare() 메서드를 사용하여 SQL 문을 준비하고, BindParam() 또는 BindValue() 메서드를 사용하여 매개 변수를 바인딩하고, Execute() 메서드를 사용하여 명령문을 실행할 수 있습니다. 마지막으로 fetch(), fetchAll() 또는 fetchColumn()과 같은 메소드를 사용하여 쿼리 결과를 가져올 수 있습니다.
json_encode() 함수는 데이터를 JSON 형식 문자열로 변환하는 데 사용할 수 있는 내장 PHP 함수입니다. 배열이나 객체 등 모든 데이터 유형을 함수에 전달할 수 있으며, 이는 클라이언트 애플리케이션에서 쉽게 사용할 수 있는 JSON 문자열로 변환됩니다.
JSON 형식의 문자열이 있으면 적절한 HTTP 헤더를 사용하여 클라이언트에 출력해야 합니다. PHP에서는 header() 함수를 사용하여 헤더를 설정할 수 있습니다. 이를 통해 응답에 대한 콘텐츠 유형과 기타 메타데이터를 지정할 수 있습니다. 예를 들어 JSON 데이터를 출력하려면 Content-Type 헤더를 "application/json"으로 설정하면 됩니다.
JSON 형식으로 데이터를 출력하고 적절한 HTTP 헤더를 설정하면 클라이언트 애플리케이션에서 REST API를 쉽게 사용할 수 있고 표준 웹 규칙을 준수할 수 있습니다.
HTTP 요청은 클라이언트(예: 웹 브라우저 또는 모바일 앱)가 API와 통신하여 데이터를 요청하거나 다른 작업을 수행하는 방식입니다. 이러한 요청을 처리하려면 요청을 처리하고 적절한 응답을 반환할 수 있는 PHP 코드를 작성해야 합니다.
PHP는 $_SERVER, $_GET, $_POST, $_REQUEST 등 현재 요청에 대한 정보에 액세스하는 데 사용할 수 있는 여러 함수를 제공합니다. 이러한 변수에는 HTTP 메서드(예: GET 또는 POST), URL 경로, 쿼리 매개변수 또는 요청 본문 데이터와 같은 정보가 포함됩니다.
다양한 유형의 요청을 처리하려면 들어오는 데이터를 분석하고 어떤 조치를 취할지 결정할 수 있는 PHP 코드를 작성해야 합니다. 예를 들어 클라이언트가 API에서 데이터를 검색하기 위해 GET 요청을 수행하는 경우 코드는 SQL 쿼리를 실행하여 데이터를 검색하고 이를 JSON 응답으로 반환할 수 있습니다. 클라이언트가 새 레코드를 생성하기 위해 POST 요청을 하는 경우 코드는 새 데이터를 MySQL 데이터베이스에 삽입하고 성공 메시지를 반환할 수 있습니다.
API에서 오류 처리 및 유효성 검사를 구현하려면 오류를 감지 및 대응하고 사용자 입력의 유효성을 검사할 수 있는 PHP 코드를 작성해야 합니다. PHP는 Trigger_error() 또는 set_error_handler()와 같이 오류 처리에 사용할 수 있는 여러 내장 함수를 제공합니다. 유효성 검사를 위해 정규식, PHP 필터 또는 사용자 정의 유효성 검사 기능을 사용할 수 있습니다.
API를 배포하려면 PHP 파일과 기타 필수 파일(예: CSS, JavaScript 또는 이미지)을 웹 서버에 업로드해야 합니다. 웹 서버 구성에 따라 API가 올바르게 라우팅되도록 .htaccess 파일을 수정해야 할 수도 있습니다.
API가 배포되면 cURL 또는 Postman과 같은 도구를 사용하여 테스트할 수 있습니다. 이러한 도구를 사용하면 API에 HTTP 요청을 보내고 응답 데이터를 검사할 수 있습니다. 이러한 도구를 사용하여 다양한 유형의 요청(예: GET, POST, PUT 또는 DELETE)을 테스트하고, 오류 처리 및 유효성 검사를 테스트하고, API가 올바른 형식(예: JSON 또는 XML)으로 올바른 데이터를 반환하는지 확인할 수 있습니다. ).
API를 테스트할 때는 성능, 보안, 유용성에 주의를 기울이는 것이 중요합니다. 트래픽이 많거나 네트워크 연결이 느린 등 다양한 조건에서 API를 테스트하여 API가 제대로 작동하고 안정적인지 확인해야 합니다. 또한 API에 보안 취약성(예: SQL 삽입 또는 교차 사이트 스크립팅)이 있는지 테스트하고 클라이언트가 쉽게 사용하고 이해할 수 있는지 확인해야 합니다.
다음은 MySQL 데이터베이스에서 데이터를 검색하는 간단한 REST API에 대한 PHP 코드 예입니다.
믿거나 말거나, 우리는 DreamFactory가 여러분을 위해 무엇을 할 수 있는지에 대해 단지 표면적인 부분만 살펴보았습니다. SQL Server, Oracle 또는 MongoDB 커넥터가 실제로 작동하는 모습을 보고 싶거나 코드를 작성하지 않고도 SOAP 서비스를 REST로 변환하는 것이 얼마나 쉬운지 보고 싶다면 엔지니어링 팀과 함께 데모를 예약해 보세요! 지금 https://www.dreamfactory.com/products를 방문하여 데모를 예약하세요!
DreamFactory가 지원하는 기타 데이터베이스:
간단한 6단계로 MySQL REST API를 생성하는 방법 게시물은 DreamFactory 소프트웨어 블로그에 처음 게재되었습니다.
위 내용은 asy 단계로 MySQL REST API를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!