Latest web development tutorials
×

PHP 코스

PHP 코스 PHP 간략한 소개 PHP 설치 PHP 문법 PHP 변수 PHP echo/print PHP 데이터 유형 PHP 상수 PHP 현 PHP 운영자 PHP If...Else PHP Switch PHP 배열 PHP 배열을 정렬 PHP 자동 전역 PHP While 순환 PHP For 순환 PHP 기능 PHP 매직 변수 PHP 네임 스페이스 PHP 객체 지향

PHP 형태

PHP 형태 PHP 폼 인증 PHP 형태 - 필수 입력 사항 PHP 형태 - 확인 이메일 및 URL PHP 완전한 형태의 인스턴스 PHP $_GET 변수 PHP $_POST 변수

PHP 고급 자습서

PHP 다차원 배열 PHP 날짜 PHP 포함 PHP 파일 PHP 파일 업로드 PHP Cookie PHP Session PHP E-mail PHP 보안 E-mail PHP Error PHP Exception PHP 필터 PHP 고급 필터 PHP JSON

PHP 7 새로운 기능

PHP 7 새로운 기능

PHP 데이터베이스

PHP MySQL 간략한 소개 PHP MySQL 연결 PHP MySQL 데이터베이스 만들기 PHP MySQL 데이터 테이블 만들기 PHP MySQL 데이터를 삽입 PHP MySQL 여러 데이터를 삽입 PHP MySQL 문 준비 PHP MySQL 데이터 읽기 PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 간략한 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 실시간 검색 AJAX RSS Reader AJAX 투표

PHP 참조 설명서

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 이미지 처리 PHP RESTful

PHP 편안하고

REST (영어 : 인 Representational 주 전송, REST라는)는 건축 제한과 원칙의 집합을 의미한다.

REST 스타일의 웹 API 디자인은 편안하고 API라고합니다. 이것은 다음의 세 가지 자원에서 정의된다 :

  • 직관적 인 간단한 주소 자원 : URI, 예를 들면 : http://example.com/resources/ .
  • 전송 자원 : 웹 서비스와 같은 인터넷 매체 유형의 반환 받아 들인다 : JSON, XML을, YAM 좋아.
  • 자원의 운영 지원되는 자원에 대한 요청의 일련의 웹 서비스 방법 (예 : POST, GET, PUT 또는 DELETE).

우리는 RESTful 웹 서비스를 만들기 위해 PHP (더 프레임) 사용이 튜토리얼은이 섹션의 코드를 사용하여 문서의 끝 부분에 다운로드 할 수 있습니다.

이 자습서에서는 다음을 배우게됩니다 :

  • 편안한 Webservice를 만들기.
  • 네이티브 PHP를 사용하여, 어떤 프레임 워크에 의존하지 않는다.
  • 규칙을 준수하는 URI 패턴을 REST.
  • RESTful 서비스는 허용하고 형식 등 JSON, XML을 반환 할 수있다.
  • 상황에 따라 반응에 대응하는 HTTP 상태 코드.
  • 데모 요청 헤더.
  • RESTful 웹 서비스를 테스트하기 위해 REST 클라이언트를 사용합니다.

편안하고 Webservice를 예를 들면

다음 코드는 RESTful 서비스 클래스 Site.php입니다 :

<? php에
/ *
*이 튜토리얼은 편안하고의 예를 보여줍니다
* RESTful 서비스 클래스
* /
클래스 사이트 {

개인 $ 사이트 = 배열 (
1 => 'Taobao의'
2 => '구글'
3 => 'w3big'
4 => '바이두'
5 => '웨이 보',
6 => '시나'

);


공공 기능 getAllSite () {
;> 사이트 - $이를 반환
}

공공 기능 getSite ($ 아이디) {

$ 사이트 = 배열 ($ 아이디 = > ($이 -> 사이트 [$ 아이디]) $이 -> 사이트 [$ 아이디] :? $이 -> 사이트 [1]);
$ 사이트를 반환;
}
}
?>

편안하고 서비스 URI 매핑

RESTful 한 서비스 URI는 간단한 시각적 자원의 주소로 설정해야합니다. htaccess로 아파치 서버는 다시 쓰기 규칙을 해당 설정해야합니다.

이 예는 우리가이 URI 규칙을 사용합니다 :

1, 모든 사이트의 목록을 얻을 수 :

http://localhost/restexample/site/list/

2, 특정 사이트의 ID를 사용하여, 다음 URI는 3 사이트의 ID를 얻을 수 :

http://localhost/restexample/site/list/3/

다음과 같이 프로젝트의htaccess로 파일 구성 규칙은 다음과 같습니다 :

# 开启 rewrite 功能
Options +FollowSymlinks
RewriteEngine on

# 重写规则
RewriteRule ^site/list/$   RestController.php?view=all [nc,qsa]
RewriteRule ^site/list/([0-9]+)/$   RestController.php?view=single&id=$1 [nc,qsa]

RESTful 웹 서비스 컨트롤러

htaccess로 파일에서, 우리는 RestController.php는 다른 방법으로 배포하는 '보기'다른 매개 변수를 공격자의 매개 변수 '보기'를 설정하여 해당 요청을 파일을 얻을 수 있습니다.다음과 같이 RestController.php 파일의 코드는 다음과 같습니다

<? php에
require_once를 ( "SiteRestHandler.php");

$보기 = "";
(에는 isset ($ _GET & # 경우 , "보기"& # 93; 91))
$보기 = $ _GET & # 91 ; "보기"& # 93;
/ *
* RESTful 서비스 컨트롤러
* URL 매핑
* /
스위치 ($보기) {

경우 "모든"
// 처리 REST URL / 사이트 / 목록 /
$ siteRestHandler = 새로운 SiteRestHandler ();
$ siteRestHandler -> getAllSites ();
휴식;

경우 "하나"
// REST URL / 사이트 / 쇼 / <핸들 ID를> /
$ siteRestHandler = 새로운 SiteRestHandler ();
$ siteRestHandler -> getSite ($ _GET [ "아이디"]);
휴식;

경우 ""
// 404 - 찾을 수 없습니다;
휴식;
}
?>

간단한 편안하고 기반 클래스

다음 다음은 HTTP 상태 코드의 요구에 따라 처리하여 RESTful 기본 클래스를 제공 SimpleRest.php 파일 코드 :

<? php에
/ *
* 간단한 RESTful 웹 서비스의 기본 클래스
* 우리는 수요에 따라이 클래스를 확장 할 수 있습니다
* /
클래스 SimpleRest {

개인 $ httpVersion = "HTTP / 1.1 ";

공공 기능 setHttpHeaders ($ contentType을, $ 에 statusCode) {

$ statusMessage = $이 -> getHttpStatusMessage ($에 statusCode);

헤더 ($이 -> httpVersion " "$에 statusCode .. ""$ statusMessage ..);
헤더 ( "콘텐츠 유형 :" $의 contentType이.)
}

공공 기능 getHttpStatusMessage ($에 statusCode) {
$ httpStatus = 배열 (
100 => '계속'
101 => '전환 프로토콜'
200 => 'OK'
201 => '생성',
202 => '허용'
203 => '비 권위있는 정보 ',
204 => '콘텐츠 없음',
205 => '콘텐츠 재설정'
206 => '일부 콘텐츠',
300 => '다중 선택'
301 => '영구 이동'
302 => '발견'
303 => '다른보기'
304 => '수정되지 않음',
305 => '프록시 사용'
306 => '(미사용)' ,
307 => '임시 리디렉션'
400 => '잘못된 요청'
401 => '무단'
402 => '지불 필수'
403 => '금지'
404 => '찾을 수 없음',
405 => '방법은 허용되지 않음' ,
406 => '불가'
407 => '프록시 인증 필요' ,
408 => '요청 시간 초과'
409 => '충돌'
410 => '사라',
411 => '길이 필수'
412 => '전제 조건 실패'
413 => '요청 엔티티가 너무 큼 '
414 => '요청 - URI 너무 긴'
415 => '지원되지 않는 미디어 유형' ,
416 => '요청 범위하지 만족할 '
417 => '기대 실패'
500 => '내부 서버 오류' ,
501 => '구현되지 않음',
502 => '잘못된 게이트웨이',
503 => '서비스를 사용할 수 없음',
504 => '게이트웨이 시간 초과'
505 => 'HTTP 버전이 지원되지 않음 ');
수익 ($ httpStatus [$에 statusCode] ) $ httpStatus [$에 statusCode] : $ 상태 [500];?
}
}
?>

RESTful 웹 서비스 처리 클래스

다음은 RESTful 웹 서비스 핸들러 클래스 SiteRestHandler.php, 우리는 RESTful 한 기본 클래스를 제공하는 위의 클래스가 리턴 HTTP 상태 코드 및 데이터 포맷, 우리는 세 개의 데이터 포맷의 예를 제공하는 경우를 결정하기위한 요청의 파라미터에 의해 결정된다 상속 : "응용 프로그램 / JSON", "응용 프로그램 / XML을"또는 "text / html과"

다음과 같이 SiteRestHandler.php 파일의 코드는 다음과 같습니다

<? php에
require_once를 ( "SimpleRest.php");
require_once를 ( "Site.php");

클래스 SiteRestHandler는 SimpleRest를 {확장

getAllSites 함수 () {

$ 사이트 = 새로운 사이트 ();
$ RAWDATA = $ 사이트 -> getAllSite ();

경우 (빈 ($ RAWDATA)) {
$에 statusCode = 404;
$ RAWDATA = 배열 ( '오류' => '찾을 수 없습니다 사이트!');
} 그밖에 {
$에 statusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
> setHttpHeaders ($ requestContentType -이 $ ;, $에 statusCode를)

경우 (strpos ($ requestContentType, ' 응용 프로그램 / JSON')! == false)를 {
$ 반응 = $이 -> encodeJson ($ RAWDATA);
$ 응답을 에코;
} 그렇지 경우 (strpos ($ requestContentType , 'text / html과')! == 거짓) {
$ 반응 = $이 -> encodeHtml ($ RAWDATA);
$ 응답을 에코;
} 그렇지 않은 경우 (strpos ($ requestContentType 경우 , '응용 프로그램 / XML')! == 거짓) {
$ 반응 = $이 -> encodeXml ($ RAWDATA);
$ 응답을 에코;
}
}

공공 기능 encodeHtml ($ 드 responseData) {

$ htmlResponse = "<표 테두리 = '1'>";
foreach는 ($로 $ 드 responseData 키 = > $ 값) {
.. $ htmlResponse = "<TR > <TD>"$ 키 "</ TD> <TD>"$ 값 "</ TD> </ TR>"...;
}
. $ htmlResponse = "</ 테이블 >";
$ htmlResponse를 반환;
}

공공 기능 encodeJson ($ 드 responseData) {
$ jsonResponse =하여 json_encode ($ 드 responseData) ;
반환 $ jsonResponse;
}

공공 기능 encodeXml ($ 드 responseData) {
// 객체 SimpleXMLElement 만들기
$의 XML = 새로운 SimpleXMLElement ( '< 현장> </ 사이트> <XML 버전 = "1.0"?>');
foreach는 ($로 $ 드 responseData 키 = > $ 값) {
$의 XML ->의 addChild ($ 키 , $ 값);
}
반환 $의 XML -> asXML () ;
}

공공 기능 getSite ($ 아이디) {

$ 사이트 = 새로운 사이트 ();
$ RAWDATA = $ 사이트 -> getSite ($ 아이디);

경우 (빈 ($ RAWDATA)) {
$에 statusCode = 404;
$ RAWDATA = 배열 ( '오류' => '찾을 수 없습니다 사이트!');
} 그밖에 {
$에 statusCode = 200;
}

$ requestContentType = $ _SERVER [ 'HTTP_ACCEPT '];
> setHttpHeaders ($ requestContentType -이 $ ;, $에 statusCode를)

경우 (strpos ($ requestContentType, ' 응용 프로그램 / JSON')! == false)를 {
$ 반응 = $이 -> encodeJson ($ RAWDATA);
$ 응답을 에코;
} 그렇지 경우 (strpos ($ requestContentType , 'text / html과')! == 거짓) {
$ 반응 = $이 -> encodeHtml ($ RAWDATA);
$ 응답을 에코;
} 그렇지 않은 경우 (strpos ($ requestContentType 경우 , '응용 프로그램 / XML')! == 거짓) {
$ 반응 = $이 -> encodeXml ($ RAWDATA);
$ 응답을 에코;
}
}
}
?>

다음으로 HTTP를 통해 다음과 같이 // localhost를 / restexample / 사이트 / 목록 / 방문, 출력 결과는 다음과 같습니다


RESTful 웹 서비스 클라이언트

그 다음 우리는 우리의 서비스를 요청하기 위해 구글 크롬 브라우저의 "고급 나머지 클라이언트"로 RESTful 웹 서비스 클라이언트를 사용할 수 있습니다.

요청 HTTP의 예 : // localhost를 / restexample / 사이트 / 목록 / 주소, 수신 된 데이터를수락하는 유사 응용 프로그램 / JSON

// 로컬 호스트 / restexample / 사이트 / 목록 / 3 / 3 요청 ID 사이트 w3big (튜토리얼), 액세스 주소는 HTTP입니다

자료 다운로드

이 예에서 사용한 코드를 다운로드하려면 아래 버튼을 클릭합니다 :

자료 다운로드