Laravel에서 API 호출 제한 설정 - 파트 1
이 부분은 라라벨에 내장된 속도 제한기를 사용하는 데 초점을 맞출 것이고, 두 번째 부분은 설정된 제한을 적용하기 위해 사용자 지정 미들웨어를 만드는 데 집중할 것입니다.
속도 제한기 사용
이 목표를 달성하는 가장 간단한 방법은 라라벨에 내장되어 API 미들웨어 제한 경로에 대해 기본적으로 활성화되는 속도 제한 서비스를 설정하는 것입니다. 기본 제한은 분당 60개 요청으로 설정됩니다. 구성은 configureRateLimiting() 메서드의/app/Providers/RouteServiceProvider에서 변경할 수 있습니다. 이것이 기본값입니다.
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60);
});
}
기본 제한을 비활성화하려는 경우(사용자가 API 엔드포인트에 대해 과부하로 이어질 수 있는 무제한 요청을 허용하므로 권장하지 않음) return Limit::none(); 이 함수에서 또는/app/Http/Kernel의 api 미들웨어 그룹에서 이 스로틀을 제거할 수 있습니다.
사용자 지정 속도 제한기 정의
configureRateLimiting() 메서드에서 더 많은 비율 제한자를 정의할 수 있습니다. 다양한 축구 경기에서 결과를 가져오기 위해 API 경로에 대한 호출을 제한하는 matches라는 리미터를 만들어 봅시다.
이 사용 사례의 경우 등록되지 않은 방문자, 무료 계정이 있는 등록된 사용자 및 서비스에 가입한 등록된 사용자의 세 가지 유형의 사용자가 있다고 가정해 보겠습니다. 첫 번째는 등록되지 않았으므로 API 토큰이 없으므로 API에 액세스할 수 없습니다. 두 번째는 API 액세스 토큰이 있지만 요청 제한은 시간당 한 번이며 구독한 사용자는 무제한으로 만들 수 있습니다. API에 대한 호출. 다음 변수를 사용합니다.
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60);
});
}
이제 모두 합치자.
//RouteServiceProvider.php
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60);
});
RateLimiter::for('matches', function (Request $request) {
$user = User::where('api_token', $request->bearerToken())
->first();
switch ($user->access) {
case 0:
return Limit::perHour(1)->response(function () {
return response()->json(
['error' => 'Request limit exceeded'],
429
);
});
break;
case 1:
return Limit::none();
break;
}
});
}
//routes/api.php
Route::middleware(['auth:api','json.force','throttle:matches'])
->get('test', 'ApiController@testMatches');
이제 자체 제한을 성공적으로 설정했으므로 구독 사용자는 아래에서 볼 수 있는 것처럼 여전히 제한되므로 원래 API 속도 제한기를 비활성화할 수 있습니다.
API 테스트에 사용된 스크립트를 찾을 수 있습니다here.
이를 달성하기 위해 API 속도 제한기를 제한 없이 설정하거나/app/Http/Kernel의 api 미들웨어 그룹에서 throttle:api를 비활성화할 수 있습니다.
다음
다음 시간에는 API에 대한 액세스를 제한해야 할 필요성을 처음 만났을 때 요청 속도 제한 문제를 직접 해결한 방법을 보여드리겠습니다. 이 옵션은 사용자 지정 미들웨어 집합을 만들고 데이터베이스 작업을 조금 더 수행해야 하므로 오늘 보여드린 것보다 조금 더 까다롭습니다.
계속하려면...
Reference
이 문제에 관하여(Laravel에서 API 호출 제한 설정 - 파트 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/loupeznik/setting-up-api-call-limits-in-laravel-part-1-2min
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Laravel에서 API 호출 제한 설정 - 파트 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/loupeznik/setting-up-api-call-limits-in-laravel-part-1-2min텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)