이 itepoint 시리즈는 휴식 원칙을 탐구했습니다. 이 기사는 Sinatra (Ruby)에서 영감을 얻은 PHP 마이크로 프레임 워크 인 Slim을 사용하여 편안한 웹 서비스를 구축하는 것을 보여줍니다. 라우팅, 요청/응답 처리 및 최소보기 지원과 같은 핵심 구성 요소가있는 Slim의 가벼운 특성은 간단한 휴식 API에 이상적입니다.
주요 개념 :
post ()
, put ()
및 delete ()
도서 기록을 작성, 업데이트 및 삭제하는 방법 슬림 소개 :
Slim을 다운로드하여 시작합니다. 이 예제는 5.3 스타일을 사용합니다. index.php
:
get("/", function () {
echo "Hello Slim World
";
});
$app->run();
?>
브라우저에서 index.php
에 액세스하면 "Hello Slim World"가 표시됩니다. 슬림 자동로드 필요한 파일. 슬림 생성자는 구성을 허용합니다 (예 : 모드
, templates.path
, view
). 모드
는 환경 (개발/생산) 및 템플릿을 설정합니다. 사용자 정의보기 핸들러는 기본값
slim_view 를 대체 할 수 있습니다. 예:
"development",
"TEMPLATES.PATH" => "./templates"
));
?>
경로 생성이 중요합니다. 경로는 http 방법을 기반으로 URI를 콜백 함수에 맵핑합니다. Slim은 첫 번째 일치하는 경로를 우선시합니다. 타의 추종을 불허하는 요청은 404 오류가 발생합니다. 경로를 정의한 후 run () 호출하여 응용 프로그램을 시작하십시오.
도서관 서비스 구축 :
라이브러리 관리 서비스를 만들어 봅시다. Notorm은 데이터베이스 상호 작용을 단순화합니다 (PDO 인스턴스 필요).
Listing Books :
이 엔드 포인트는 모든 책을 JSON 형식으로 나열합니다.
get("/books", function () use ($app, $db) {
$books = array();
foreach ($db->books() as $book) {
$books[] = array(
"id" => $book["id"],
"title" => $book["title"],
"author" => $book["author"],
"summary" => $book["summary"]
);
}
$app->response()->header("Content-Type", "application/json");
echo json_encode($books);
});
// ... (rest of the code) ...
,
"요약"=> $ book
);
}
$ app-> response ()-> 헤더 ( "content-type", "application/json");
echo json_encode ($ books);
});
// ... (코드의 나머지) ...
get () 핸들 get requests.
사용
Application/JSON 로 설정되었으며 책 데이터는 JSON으로 인코딩됩니다.
책 세부 정보 가져 오기 :
get("/book/:id", function ($id) use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($data = $book->fetch()) {
echo json_encode(array(
"id" => $data["id"],
"title" => $data["title"],
"author" => $data["author"],
"summary" => $data["summary"]
));
} else {
echo json_encode(array(
"status" => false,
"message" => "Book ID $id does not exist"
));
}
});
// ... (rest of the code) ...
php
// ... (이전 코드) ...
$ app-> get ( "/book/: id", function ($ id) 사용 ($ app, $ db) {
$ app-> response ()-> 헤더 ( "content-type", "application/json");
$ book = $ db-> books ()-> where ( "id", $ id);
if ($ data = $ book-> fetch ()) {
echo json_encode (배열)
"id"=> $ data ,
"title"=> $ data
,
"저자"=> $ data ,
"요약"=> $ data
));
} 또 다른 {
echo json_encode (배열)
"상태"=> 거짓,
"메시지"=> "Book ID $ ID가 존재하지 않습니다"
));
}
});
// ... (코드의 나머지) ...
: id 는 콜백 함수로 전달됩니다. 선택적 매개 변수는 /book (/: id)
를 사용합니다. 명시적인 콜백 인수가없는 선택적 매개 변수의 경우 func_get_args () .
를 사용하십시오.
책 추가 및 편집 :
post("/book", function () use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $app->request()->post();
$result = $db->books->insert($book);
echo json_encode(array("id" => $result["id"]));
});
$app->put("/book/:id", function ($id) use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
$post = $app->request()->put();
$result = $book->update($post);
echo json_encode(array(
"status" => (bool)$result,
"message" => "Book updated successfully"
));
} else {
echo json_encode(array(
"status" => false,
"message" => "Book id $id does not exist"
));
}
});
// ... (rest of the code) ...
adds, put () 업데이트 책 :
php
// ... (이전 코드) ...
$ app-> post ( "/book", function () 사용 ($ app, $ db) {
$ app-> response ()-> 헤더 ( "content-type", "application/json");
$ book = $ app-> request ()-> post ();
$ result = $ db-> books-> 삽입 ($ book);
echo json_encode (배열 ( "id"=> $ result ));
});
$ app-> put ( "/book/: id", function ($ id) 사용 ($ app, $ db) {
$ app-> response ()-> 헤더 ( "content-type", "application/json");
$ book = $ db-> books ()-> where ( "id", $ id);
if ($ book-> fetch ()) {
$ post = $ app-> request ()-> put ();
$ result = $ book-> update ($ post);
echo json_encode (배열)
"상태"=> (bool) $ 결과,
"메시지"=> "책이 성공적으로 업데이트되었습니다"
));
} 또 다른 {
echo json_encode (배열)
"상태"=> 거짓,
"메시지"=> "Book ID $ ID가 존재하지 않습니다"
));
}
});
// ... (코드의 나머지) ...
$ app-> request ()-> post ()
및$ app-> request ()-> putt ()
각각 게시물을 검색하고 데이터를 넣습니다. 브라우저 기반 PUT 요청의 경우, 숨겨진 필드delete("/book/:id", function ($id) use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
$result = $book->delete();
echo json_encode(array(
"status" => true,
"message" => "Book deleted successfully"
));
} else {
echo json_encode(array(
"status" => false,
"message" => "Book id $id does not exist"
));
}
});
// ... (rest of the code) ...
책 삭제 :
id로 책을 삭제합니다 :
php // ... (이전 코드) ... $ app-> delete ( "/book/: id", function ($ id) 사용 ($ app, $ db) { $ app-> response ()-> 헤더 ( "content-type", "application/json"); $ book = $ db-> books ()-> where ( "id", $ id); if ($ book-> fetch ()) { $ result = $ book-> delete (); echo json_encode (배열) "상태"=> true, "메시지"=> "도서는 성공적으로 삭제되었습니다." )); } 또 다른 { echo json_encode (배열) "상태"=> 거짓, "메시지"=> "Book ID $ ID가 존재하지 않습니다" )); } }); // ... (코드의 나머지) ...
delete ()
메소드는 데이터베이스 레코드를 제거합니다. map () 메소드는 단일 경로에서 여러 HTTP 메소드를 처리합니다 (여기에는 표시되지 않음).
이 기사에서는 슬림 한 기본적인 편안한 웹 서비스를 구축하는 것을 보여줍니다. 추가 개발에는 강력한 오류 처리 및 입력 검증이 포함되어야합니다. 소스 코드 (여기에는 포함되지 않음)는 GitHub (원본 텍스트로 제공되지 않음)에서 찾을 수 있습니다. 원본 텍스트의 FAQ 섹션은 Slim의 문서를 통해 쉽게 구할 수있는 기본 정보를 제공하므로 생략됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3