"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP 전문가 | 슬림 프레임 워크를 사용하여 편안한 웹 서비스를 작성하십시오

PHP 전문가 | 슬림 프레임 워크를 사용하여 편안한 웹 서비스를 작성하십시오

2025-04-14에 게시되었습니다
검색:910

PHP Master | Writing a RESTful Web Service with Slim

이 itepoint 시리즈는 휴식 원칙을 탐구했습니다. 이 기사는 Sinatra (Ruby)에서 영감을 얻은 PHP 마이크로 프레임 워크 인 Slim을 사용하여 편안한 웹 서비스를 구축하는 것을 보여줍니다. 라우팅, 요청/응답 처리 및 최소보기 지원과 같은 핵심 구성 요소가있는 Slim의 가벼운 특성은 간단한 휴식 API에 이상적입니다.

주요 개념 :

  • Slim은 PHP 5.2 및 절차 및 (5.3) 기능적 프로그래밍 스타일을 지원하는 간단한 편안한 서비스에 완벽한 PHP 마이크로 프레임 워크입니다.
  • 특정 HTTP 방법에 대한 콜백 함수를 맵으로 맵핑합니다. Slim은 동일한 uri에 대한 여러 방법을 효율적으로 처리합니다.
  • 라이브러리 관리 응용 프로그램 예제 웹 서비스 호출을 통해 책 세부 정보 목록, 추가, 삭제 및 업데이트를 표시합니다. 가벼운 PHP 데이터베이스 라이브러리 인 Notorm은 데이터베이스 상호 작용을 처리합니다.
  • endpoints aude 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 () PHP Master | Writing a RESTful Web Service with Slim 메소드는 단일 경로에서 여러 HTTP 메소드를 처리합니다 (여기에는 표시되지 않음).

결론:

이 기사에서는 슬림 한 기본적인 편안한 웹 서비스를 구축하는 것을 보여줍니다. 추가 개발에는 강력한 오류 처리 및 입력 검증이 포함되어야합니다. 소스 코드 (여기에는 포함되지 않음)는 GitHub (원본 텍스트로 제공되지 않음)에서 찾을 수 있습니다. 원본 텍스트의 FAQ 섹션은 Slim의 문서를 통해 쉽게 구할 수있는 기본 정보를 제공하므로 생략됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3