Cakephp로 API 만들기
그것을하는 방법
먼저 새로운 플러그인을 생성합니다.
php bin/cake.php bake plugin Api
그리고
Application.php
부트스트랩 함수에 로드합니다.// src/Controller/AppController.php
// add this to bootstrap function at the end
$this->addPlugin('Api');
다음으로 URL 확장자 사용을 허용해야 합니다. 저에게는
.json
입니다. 필요한 경우 .xml
허용할 수도 있습니다. 더 많은 확장 기능을 원하시면 CakePHP의 공식 문서를 확인하십시오. 플러그인 열기 및 편집AppController
// /plugins/Api/src/Controller/AppController.php
public function initialize(): void
{
parent::initialize();
// Load Request handler
$this->loadComponent('RequestHandler');
}
접두사와 확장이 다음과 같이 보이도록 플러그인 라우팅을 업데이트하십시오.
// /plugins/Api/src/Plugin.php
public function routes(RouteBuilder $routes): void
{
$routes->plugin(
'Api',
['path' => '/api'],
function (RouteBuilder $builder) {
// Add custom routes here
// API ver 1.0 routes
// add new block for more prefixes
$builder->prefix('V1', ['path' => '/v1'], function (RouteBuilder $routeBuilder) {;
$routeBuilder->setExtensions(['json']); // allow extensins. this have to be here for each prefix
$routeBuilder->fallbacks();
});
$builder->fallbacks();
}
);
parent::routes($routes);
}
다음과 같이 API 컨트롤러에서 작업을 업데이트하거나 생성합니다.
// plugins/Api/src/Controller/V1/HelloController.php
public function index()
{
$this->Authorization->skipAuthorization();
$text = [
'message' => 'Hello'
];
$this->set('text', $text);
// Add this to serialize repose
$this->viewBuilder()
->setOption('serialize', 'text');
}
curl로 테스트할 수 있습니다. 모든 것이 정상이면 결과를 볼 수 있습니다
curl -i http://localhost:8765/api/v1/hello/index.json
API 관련 경로에서 Csrf 검사 건너뛰기
보너스 API에 데이터를 게시하려는 경우 CSRF 토큰이 일치하지 않기 때문에 응답으로 오류 메시지를 받게 됩니다. 기본적으로 미들웨어를 사용하는 CakePHP 4는
플러그인 경로에 대한 확인 CSRF를 건너뛰도록 설정합니다. 방법은 다음과 같습니다.
Application.php
끝에 다음 기능을 복사하거나 쓰십시오.// src/Application.php
public function getCsrfProtectionMiddleware() : CsrfProtectionMiddleware
{
$csrf = new CsrfProtectionMiddleware([
'httponly' => true,
]);
$csrf->skipCheckCallback(function ($request) {
if ($request->getParam('plugin') == 'Api') { // Skip Checking if plugin is API
return true;
}
});
return $csrf;
}
csrf 미들웨어 로드를 찾아서 업데이트하십시오.
->add(new CsrfProtectionMiddleware([
'httponly' => true,
]));
이에
->add($this->getCsrfProtectionMiddleware());
그리고 당신은 확인할 수 있습니다
curl -i --data message="Hello from data" http://localhost:8765/api/v1/hello/index.json
게시물에서 메시지를 보려면 다음을 수행하여 색인 기능을 업데이트하십시오.
// plugins/Api/src/Controller/V1/HelloController.php
public function index()
{
$this->Authorization->skipAuthorization();
$text = [
'message' => $this->request->getData('message'),
];
$this->set('text', $text);
// Add this to serialize repose
$this->viewBuilder()
->setOption('serialize', 'text');
}
이것이 CakePHP로 API를 생성하는 방법입니다.
Joey Kyber에 Unsplash의 사진
원래 게시 위치 themaymeow.com
Reference
이 문제에 관하여(Cakephp로 API 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maymeow/create-api-with-cakephp-2j8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)