MySQL/MariaDB, PostgreSQL, SQL Server 또는 SQLite 데이터베이스에 REST API를 추가하는 단일 파일 PHP7 스크립트.
NB : 이것은 PHP의 TreeQL 참조 구현입니다.
https://github.com/mevdschee/php-crud-api
관련 프로젝트 :
- PHP-API-AUTH: PHP-CRUD-API에 대한 인증 공급자인 단일 파일 PHP 스크립트
- PHP-SP-API: SQL 데이터베이스에 REST API를 추가하는 단일 파일 PHP 스크립트.
- PHP-CRUD-UI: PHP-CRUD-API 프로젝트에 UI를 추가하는 단일 파일 PHP 스크립트.
- VUE-CRUD-UI: PHP-CRUD-API 프로젝트에 UI를 추가하는 단일 파일 Vue.js 스크립트.
- PHP-CRUD-ADMIN: PHP-CRUD-API 프로젝트에 데이터베이스 관리 인터페이스를 추가하는 단일 파일 PHP 스크립트.
다음 위치에도 이 스크립트의 포트가 있습니다.
PHP, Java, Go, C # .net core, Node.js 및 Python에서 기본 REST CRUD 기능만 지원하는 이 스크립트의 개념 증명 포트도 있습니다.
요구 사항
- 이러한 데이터베이스 시스템 중 하나에 대해 PDO 드라이버가 활성화 된 PHP 7.0 이상
-, MySQL의 공간 기능을 위한 MySQL 5.6 / MariaDB 10.0 이상
-, 공간 기능을 위한 PostgreSQL 9.1 이상 (PostGIS 2.0 이상 포함)
-, SQL Server 2012 이상 (Linux 지원의 경우 2017)
-, SQLite 3.16 이상 (공간 기능은 지원되지 않음)
설치
이것은 단일 파일 응용 프로그램입니다! 어딘가에 "api.php"를 업로드하고 즐기십시오!
로컬 개발의 경우 PHP의 내장 웹 서버를 실행할 수 있습니다.
php -S localhost:8080
다음 URL을 열어 스크립트를 테스트합니다.
http://localhost:8080/api.php/records/posts/1
파일 하단에서 구성을 수정하는 것을 잊지 마십시오.
또는 이 프로젝트를 원하는 웹 프레임 워크에 통합 할 수 있습니다. 다음을 참조하십시오.
이러한 통합에서 Composer는 이 프로젝트를 종속성으로 로드하는 데 사용됩니다.
composer를 사용하지 않는 사람들을 위해 "api.include.php"파일이 제공됩니다. 이 파일은 "src/index.php"의 구성을 제외하고 "api.php"의 모든 것을 포함하며 PHP의 "include"에서 사용할 수 있습니다.
구성
"api.php"파일 하단에서 다음 줄을 편집합니다.
$config = new Config([
'username' => 'xxx',
'password' => 'xxx',
'database' => 'xxx',
]);
다음은 모든 구성 옵션과 대괄호 사이의 기본값입니다.
- "driver": mysql, pgsql, sqlsrv or sqlite (mysql)
- "address": Hostname (or filename) of the database server (localhost)
- "port": TCP port of the database server (defaults to driver default)
- "username": Username of the user connecting to the database (no default)
- "password": Password of the user connecting to the database (no default)
- "database": Database the connecting is made to (no default)
- "tables": Comma separated list of tables to publish (defaults to 'all')
- "middlewares": List of middlewares to load (cors)
- "controllers": List of controllers to load (records,geojson,openapi)
- "openApiBase": OpenAPI info ({"info":{"title":"PHP-CRUD-API","version":"1.0.0"}})
- "cacheType": TempFile, Redis, Memcache, Memcached or NoCache (TempFile)
- "cachePath": Path/address of the cache (defaults to system's temp directory)
- "cacheTime": Number of seconds the cache is valid (10)
- "debug": Show errors in the "X-Exception" headers (false)
- "basePath": URI base path of the API (determined using PATH_INFO by default)
모든 구성 옵션은 환경 변수로도 사용할 수 있습니다. 구성 옵션을 대문자, "PHP_CRUD_API_"접두사 및 단어 분리를 위한 밑줄로 작성하십시오. 예를 들면 다음과 같습니다.
- PHP_CRUD_API_DRIVER=mysql
- PHP_CRUD_API_ADDRESS=localhost
- PHP_CRUD_API_PORT=3306
- PHP_CRUD_API_DATABASE=php-crud-api
- PHP_CRUD_API_USERNAME=php-crud-api
- PHP_CRUD_API_PASSWORD=php-crud-api
- PHP_CRUD_API_DEBUG=1
환경 변수는 PHP 구성보다 우선합니다.
한계
이러한 제한 및 제약이 적용됩니다.
- 기본 키는 자동 증가 (1 ~ 2 ^ 53) 또는 UUID 여야 합니다.
- 복합 기본 및 복합 외래 키는 지원되지 않습니다.
- 복잡한 쓰기 (트랜잭션)는 지원되지 않습니다.
- 함수를 호출하는 복잡한 쿼리 (예 : "concat"또는 "sum")는 지원되지 않습니다.
- 데이터베이스는 외래 키 제약을 지원하고 정의해야 합니다.
- SQLite는 bigint 유형의 자동 증가 기본 키를 가질 수 없습니다.
- SQLite는 테이블 열 (구조) 변경을 지원하지 않습니다.