먼저 REST가 무엇인지 알려드리겠습니다
restful
REST의 전체 이름은 Representational State Transfer이며 중국어로 표현(편집자 주: 일반적으로 표현으로 번역됨) 상태를 의미합니다. 옮기다 . 이는 2000년 HTTP 사양의 주요 작성자 중 한 명인 Roy Fielding의 박사 논문에서 처음 등장했습니다. 그는 논문에서 “이 글을 쓰는 목적은 아키텍처 원칙을 준수한다는 전제 하에 네트워크 기반 응용 소프트웨어의 아키텍처 설계를 이해하고 평가하며, 강력한 기능과 좋은 성능, 그리고 뛰어난 성능을 갖춘 아키텍처를 얻는 것”이라고 언급했습니다. 아키텍처. REST는 아키텍처 제약 조건과 원칙의 집합을 나타냅니다. "아키텍처가 REST의 제약 조건과 원칙을 준수하는 경우 이를 RESTful 아키텍처라고 합니다.
REST 자체는 새로운 기술, 구성 요소 또는 서비스를 만들지 않으며 RESTful의 기본 아이디어는 웹의 기존 기능과 기능을 사용하고 기존 웹 표준 지침 및 제약. REST 자체는 웹 기술의 영향을 많이 받지만 이론적으로 REST 아키텍처 스타일은 HTTP에 바인딩되지 않지만 현재 HTTP는 REST와 관련된 유일한 인스턴스입니다. 따라서 여기서 설명하는 REST도 HTTP를 통해 구현된 REST입니다.
얼마 전 Yii2 프레임워크를 사용하여 RESTful 스타일 API 세트를 작성하는 프로젝트를 진행하고 있었습니다. "Yii 2.0 Authoritative Guide"를 확인해보니 비교적 간략하게 작성된 것을 발견했습니다. 그래서 저는 Yii2 프레임워크 RESTful을 처음 접하는 친구들이 빨리 시작할 수 있도록 돕기 위해 여기에 튜토리얼 게시물을 작성하고 있습니다.
1. 디렉토리 구조
간단한 RESTful API를 구현하려면 파일 3개만 있으면 됩니다. 디렉터리는 다음과 같습니다.
frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php
2. URL 규칙 구성
1. 서버의 다시 쓰기 규칙을 수정하고 모두 지정합니다. /books/1 형식을 지원하기 위한 index.php의 URL입니다.
Apache 서버인 경우 frontend/web/ 디렉터리에 새 .htaccess 파일을 만듭니다. 파일 내용은 다음과 같습니다.
RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php
Nginx 서버인 경우 nginx/conf/nginx.conf를 수정하여 해당 파일에 설정합니다. "현재 "서버{}" {}의 위치 /, 빨간색으로 표시된 다음 내용을 추가합니다:
location / { try_files $uri $uri/ /index.php$is_args$args; }
2. 프런트엔드/구성 수정 /main.php 파일을 열고 북 컨트롤러 규칙에 URL을 추가합니다. 이런 방식으로 예쁜 URL과 의미 있는 http 동사를 통해 데이터에 액세스하고 조작할 수 있습니다. 구성은 다음과 같습니다.
'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book'], ], ], ],
3. 모델 생성
1. 데이터베이스에 책 테이블을 생성합니다. book 테이블의 내용은 다음과 같습니다.
-- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` char(50) NOT NULL DEFAULT '', `num` tinyint(3) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of book -- ---------------------------- INSERT INTO `book` VALUES ('1', 'toefl', '10'); INSERT INTO `book` VALUES ('2', 'ielts', '20'); INSERT INTO `book` VALUES ('3', 'sat', '30'); INSERT INTO `book` VALUES ('4', 'gre', '40'); INSERT INTO `book` VALUES ('5', 'gmat', '50');
2. frontend/models/ 디렉토리에 새로운 Book.php를 생성합니다. 파일 내용은 다음과 같습니다.
namespace frontend\models; use yii\db\ActiveRecord; class Book extends ActiveRecord { public static function tableName() { return 'book'; } }
4. 컨트롤러 생성
프론트엔드에 새 BookController.php를 생성합니다. /컨트롤러/디렉토리. 컨트롤러 클래스는 yiirestActiveController에서 확장됩니다. yiirestActiveController::modelClass를 frontendmodelsBook으로 지정함으로써 컨트롤러는 데이터를 얻고 처리하는 데 사용할 모델을 알 수 있습니다. 파일 내용은 다음과 같습니다.
namespace frontend\controllers; use yii\rest\ActiveController; class BookController extends ActiveController { public $modelClass = 'frontend\models\Book'; }
5. 테스트
이쯤 되면 RESTful 생성이 완료되었습니다. 사용자 데이터 스타일 API에 액세스합니다. 생성된 API에는 다음이 포함됩니다.
GET /books: 모든 도서 나열
HEAD /books: 도서 목록의 요약 정보 표시
POST /books: 새 도서 1권 추가
GET /books/ 1: 도서 ID=1의 상세 정보 반환
HEAD /books/1: 도서 ID=1의 요약 정보 표시
PATCH /books/1 및 PUT /books/1: 도서 ID=1 정보 업데이트
DELETE /books/1: 도서 ID=1에 대한 정보 삭제
OPTIONS /books: end/books에 대한 동사 지원 표시
OPTIONS /books/1: end/books/1에 대한 지원 표시 동사
은 웹 브라우저에 http://{프론트엔드의 도메인 이름}/books URL을 입력하여 API에 액세스하거나 일부 브라우저 플러그인을 사용하여 Firefox의 RestClient, Chrome Advanced Rest Client와 같은 특정 헤더 요청을 보낼 수 있습니다. , 우체부 등
6. 사용법
1.Yii는 마지막에 사용되는 컨트롤러 이름을 자동으로 복수형으로 표시합니다. 이는 yiirestUrlRule이 사용하는 엔드포인트에 대한 컨트롤러를 자동으로 복수화할 수 있기 때문입니다. yiirestUrlRule::pluralize를 false로 설정하면 이 동작을 비활성화할 수 있습니다.
'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book', 'pluralize' => false], ],
2. 필드를 사용하고 매개 변수를 확장하여 어떤 필드를 지정해야 하는지 지정할 수 있습니다. 내부 결과에 포함됩니다. 예를 들어 URL http://{프런트엔드의 도메인 이름}/books?fields=name,num은 이름과 필드 수만 반환합니다.
위 내용은 편집자가 소개한 Yii2 프레임워크를 사용하여 RESTful API를 만드는 빠른 시작 튜토리얼입니다. 궁금한 사항이 있으면 메시지를 남겨주시면 편집자가 답변해 드리겠습니다. 당신에게. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
Yii2 프레임워크의 RESTful 스타일 API 빠른 시작 튜토리얼과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!