-
JSON 형식의 구조화 된 오류 처리는 API 가용성을 향상시켜 디버깅 및 통합을 용이하게하는 명확한 오류 메시지 및 코드를 제공합니다.
- 기본 인증 및 JSON 처리에 대한 토큰과 같은 미들웨어를 통한 인증은 API 상호 작용을 효과적으로 보호하고 관리하는 데 중요합니다.
- REST : 개발자 친화적 인 ui 우선, API는 개발자의 사용자 인터페이스이므로 친절하고 단순하며 사용하기 쉽고 물론 즐거운 디지털 정크가 될 것입니다. 단순하지만 잘 작성된 readme 파일이더라도 문서는 좋은 시작입니다. 필요한 정보는 서비스 범위와 방법 및 액세스 포인트 목록에 대한 요약입니다. 좋은 요약은 다음과 같습니다. & gt; 두 가지 객체 유형, 연락처 및 메모가 있습니다. 각 연락처에는 이름, 성 및 이메일 주소와 같은 기본 속성이 있습니다. 또한, 각 접점은 이와 관련된 Markdown 형식의 여러 메모를 가질 수 있습니다. 그러면 우리가 구현할 모든 리소스와 운영을 나열하는 것이 좋습니다. 이는 응용 프로그램 와이어 프레임을 시각화하는 것과 동등한 것으로 간주 될 수 있습니다. REST의 주요 원칙에 따라 각 리소스는 작업에 액세스하는 데 사용되는 HTTP 방법 인 URL로 표시됩니다. 예를 들어, get/api/contacts/12는 ID 12와의 연락처를 검색하고 Put/API/Contacts/12는 동일한 연락처를 업데이트합니다. 전체 메소드 목록은 다음과 같습니다
<code>URL HTTP Method Operation /api/contacts GET 返回联系人数组 /api/contacts/:id GET 返回 ID 为 :id 的联系人 /api/contacts POST 添加一个新联系人并返回它(添加了 id 属性) /api/contacts/:id PUT 更新 ID 为 :id 的联系人 /api/contacts/:id PATCH 部分更新 ID 为 :id 的联系人 /api/contacts/:id DELETE 删除 ID 为 :id 的联系人 /api/contacts/:id/star PUT 将 ID 为 :id 的联系人添加到收藏夹 /api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人 /api/contacts/:id/notes GET 返回 ID 为 :id 的联系人的笔记 /api/contacts/:id/notes/:nid GET 返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes POST 为 ID 为 :id 的联系人添加新笔记 /api/contacts/:id/notes/:nid PUT 更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes/:nid PATCH 部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
도구 및 설정
API를 구축하는 데 사용할 기본 도구는 슬림 프레임 워크입니다. 왜? & gt; [[]는 간단하고 강력한 웹 응용 프로그램과 API를 신속하게 작성하는 데 도움이됩니다. <.> 이것은 사실입니다. 강력한 라우팅 기능은 Get and Post 이외의 사용 방법을 쉽게 사용할 수 있으며 HTTP 메소드 오버라이드 (HTTP 헤더 및 숨겨진 포스트 필드를 통해)에 대한 내장 지원을 제공하고 미들웨어 및 추가 기능을 사용하여 응용 프로그램 및 API를 활성화 할 수 있습니다. 개발은 정말 쉽습니다. Slim과 함께 Idiorm을 사용하여 데이터베이스 계층에 액세스하고 독백을 사용하여 로깅을합니다. 따라서 Composer.json 파일은 다음과 같습니다
슬림/엑스트라 및 슬림/미들웨어 패키지는 컨텐츠 유형 해상도 및 기본 인증과 같은 유용한 기능을 제공합니다. 우리의 사용자 정의 클래스는 API 네임 스페이스와 LIB 디렉토리에 있습니다. 이 시점에서 작업 디렉토리 구조는 다음과 같습니다.
{ "name": "yourname/my-contacts", "description": "Simple RESTful API for contacts management", "license": "MIT", "authors": [ { "name": "Your Name", "email": "you@yourdomain.com" } ], "require": { "slim/slim": "*", "slim/extras": "*", "slim/middleware": "*", "monolog/monolog": "*", "j4mie/paris": "*", "flynsarmy/slim-monolog": "*" }, "archive": { "exclude": ["vendor", ".DS_Store", "*.log"] }, "autoload": { "psr-0": { "API": "lib/" } } }부팅 프로그램 및 프론트 엔드 컨트롤러
앞에서 언급했듯이 bootstrap.php 파일은 응용 프로그램 설정 및 자동 로더 설정을로드 할 책임이 있습니다.
<code>URL HTTP Method Operation /api/contacts GET 返回联系人数组 /api/contacts/:id GET 返回 ID 为 :id 的联系人 /api/contacts POST 添加一个新联系人并返回它(添加了 id 属性) /api/contacts/:id PUT 更新 ID 为 :id 的联系人 /api/contacts/:id PATCH 部分更新 ID 为 :id 的联系人 /api/contacts/:id DELETE 删除 ID 为 :id 的联系人 /api/contacts/:id/star PUT 将 ID 为 :id 的联系人添加到收藏夹 /api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人 /api/contacts/:id/notes GET 返回 ID 为 :id 的联系人的笔记 /api/contacts/:id/notes/:nid GET 返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes POST 为 ID 为 :id 的联系人添加新笔记 /api/contacts/:id/notes/:nid PUT 更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes/:nid PATCH 部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记 /api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
{ "name": "yourname/my-contacts", "description": "Simple RESTful API for contacts management", "license": "MIT", "authors": [ { "name": "Your Name", "email": "you@yourdomain.com" } ], "require": { "slim/slim": "*", "slim/extras": "*", "slim/middleware": "*", "monolog/monolog": "*", "j4mie/paris": "*", "flynsarmy/slim-monolog": "*" }, "archive": { "exclude": ["vendor", ".DS_Store", "*.log"] }, "autoload": { "psr-0": { "API": "lib/" } } }
Slim에는 Route Groups라는 멋진 기능이 있습니다. 이 기능을 사용하면 다음과 같은 응용 프로그램 경로를 정의 할 수 있습니다.
<code>bootstrap.php composer.json README.md bin/ import install lib/ API/ public/ .htaccess index.php share/ config/ default.php db/ logs/ sql/ data/ contacts.sql users.sql tables/ contacts.sql notes.sql users.sql ssl/ mysitename.crt mysitename.key</code>
우리의 JSON 미들웨어는 "JSON Response Only"와 "JSON Encoding Body"라는 두 가지 모범 사례를 구현합니다. 이 방법은 다음과 같습니다.
인증
이 메소드는 Auth Token에 대한 php_auth_user 요청 헤더를 검색하고 존재하지 않거나 유효하지 않은 경우 401 금지 상태 및 인증 헤더를 클라이언트에게 전달합니다. verify () 메소드는 보호되므로 내 버전은 간단합니다
REST 버전 API 버전을 사용하면 기존 클라이언트에 영향을 미치지 않고 비파괴적인 변경 사항을 도입 할 수 있습니다. URL에 버전 번호를 포함 시키거나 사용자 정의 요청 헤더를 사용하여 API를 버전 할 수 있습니다. 모든 변경 사항을 기록하고 API 소비자에게 새 버전 및 해당 기능을 알리십시오.
<code>URL HTTP Method Operation
/api/contacts GET 返回联系人数组
/api/contacts/:id GET 返回 ID 为 :id 的联系人
/api/contacts POST 添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT 更新 ID 为 :id 的联系人
/api/contacts/:id PATCH 部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE 删除 ID 为 :id 的联系人
/api/contacts/:id/star PUT 将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人
/api/contacts/:id/notes GET 返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET 返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST 为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT 更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH 部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
<code>URL HTTP Method Operation
/api/contacts GET 返回联系人数组
/api/contacts/:id GET 返回 ID 为 :id 的联系人
/api/contacts POST 添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT 更新 ID 为 :id 的联系人
/api/contacts/:id PATCH 部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE 删除 ID 为 :id 的联系人
/api/contacts/:id/star PUT 将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人
/api/contacts/:id/notes GET 返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET 返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST 为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT 更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH 部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
{
"name": "yourname/my-contacts",
"description": "Simple RESTful API for contacts management",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "you@yourdomain.com"
}
],
"require": {
"slim/slim": "*",
"slim/extras": "*",
"slim/middleware": "*",
"monolog/monolog": "*",
"j4mie/paris": "*",
"flynsarmy/slim-monolog": "*"
},
"archive": {
"exclude": ["vendor", ".DS_Store", "*.log"]
},
"autoload": {
"psr-0": {
"API": "lib/"
}
}
}
<code>bootstrap.php
composer.json
README.md
bin/
import
install
lib/
API/
public/
.htaccess
index.php
share/
config/
default.php
db/
logs/
sql/
data/
contacts.sql
users.sql
tables/
contacts.sql
notes.sql
users.sql
ssl/
mysitename.crt
mysitename.key</code>
<Directory>
# Required for mod_rewrite in .htaccess
AllowOverride FileInfo
Options All -Indexes
DirectoryIndex index.php index.shtml index.html
<IfModule php5_module="">
# For Development only!
php_flag display_errors On
</IfModule>
# Enable gzip compression
<IfModule filter_module="">
AddOutputFilterByType DEFLATE application/json
</IfModule>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
<VirtualHost *:80>
ServerAdmin you@yourdomain.com
DocumentRoot "/path/to/MyApp/public"
ServerName myapp.dev
<IfModule rewrite_module="">
RewriteEngine on
## Throw a 403 (forbidden) status for non secure requests
RewriteCond %{HTTPS} off
RewriteRule ^.*$ - [L,R=403]
</IfModule>
</VirtualHost>
<IfModule ssl_module="">
NameVirtualHost *:443
Listen 443
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
<VirtualHost *:443>
ServerAdmin you@yourdomain.com
DocumentRoot "/path/to/MyApp/public"
ServerName myapp.dev
SSLEngine on
SSLCertificateFile /path/to/MyApp/share/ssl/mysitename.crt
SSLCertificateKeyFile /path/to/MyApp/share/ssl/mysitename.key
SetEnv SLIM_MODE development
</VirtualHost>
</IfModule>
입니다
편안한 API를 설계하는 방법은 무엇입니까?
위 내용은 처음부터 REST API를 구축하십시오 : 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

TheBesteptroachForendingeMailsInphPisusingThephPmailerlibraryDuetoitsReliability, featurerichness 및 reaseofuse.phpmailersupportssmtp, proversDetailErrorHandling, supportSattachments, andenhancessecurity.foroptimalu

의존성 주입 (DI)을 사용하는 이유는 코드의 느슨한 커플 링, 테스트 가능성 및 유지 관리 가능성을 촉진하기 때문입니다. 1) 생성자를 사용하여 종속성을 주입하고, 2) 서비스 로케이터 사용을 피하고, 3) 종속성 주입 컨테이너를 사용하여 종속성을 관리하고, 4) 주입 종속성을 통한 테스트 가능성을 향상 시키십시오.

phpperformancetuningiscrucialbecauseitenhancesspeedandefficies, thearevitalforwebapplications.1) cachingsdatabaseloadandimprovesResponsetimes.2) 최적화 된 databasequerieseiesecessarycolumnsingpeedsupedsupeveval.

theBestPracticesForendingEmailsSecurelyPinphPinclude : 1) usingecureconfigurations와 whithsmtpandstarttlSencryption, 2) 검증 및 inputSpreverventInseMeStacks, 3) 암호화에 대한 암호화와 비도시를 확인합니다

tooptimizephPapplicationsperperperperperperperperperferferferferferferferferferferperferferperferperperferferfercations.1) ubsicationScachingwithApcuTeDucedAtaFetchTimes.2) 최적화 된 ABASEABASES.3)

expendencyInphpisaDesignpatternpattern thatenhances-flexibility, testability 및 maintainabilitable externaldenciestoclasses.itallowsforloosecoupling, easiertesting throughmocking 및 modulardesign, berrequirecarefultructuringtoavoid-inje

PHP 성능 최적화는 다음 단계를 통해 달성 할 수 있습니다. 1) 스크립트 상단에 require_once 또는 include_once를 사용하여 파일로드 수를 줄입니다. 2) 데이터베이스 쿼리 수를 줄이기 위해 전처리 문 및 배치 처리를 사용하십시오. 3) Opcode 캐시에 대한 Opcache 구성; 4) PHP-FPM 최적화 프로세스 관리를 활성화하고 구성합니다. 5) CDN을 사용하여 정적 자원을 배포합니다. 6) 코드 성능 분석을 위해 Xdebug 또는 Blackfire를 사용하십시오. 7) 배열과 같은 효율적인 데이터 구조를 선택하십시오. 8) 최적화 실행을위한 모듈 식 코드를 작성하십시오.

opCodeCachingsIntIficInlyIntImeRimproveSphpperformanceCachingCompileDCode, retingServerLoadandResponsEtimes.1) itStoresCompyledPhpCodeInMemory, BYPASSINGPARSINGCOMPILING.2) UseOpCacheSettingParametersInphP.Ini, likeMoryConsAncme AD


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.