분류 php

PHP-CRUD-API

컨텐츠 정보

  • 조회 343 (작성일 )

본문

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.jsPython에서 기본 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는 테이블 열 (구조) 변경을 지원하지 않습니다.