Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공

3914 단어 laravelphpwebdev
동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다.
일반적으로 우리 회사에서는 프런트엔드 개발자에게 올바른 번역된 콘텐츠를 다시 전달하기 위해 모든 요청에 ​​대해 쿼리 매개변수lang를 보내도록 지시합니다.

예:

GET /api/blogs?lang=en


그러나 Laravel 유효성 검사는 이를 인식하지 못하고 항상 앱 로케일(또는 폴백 로케일)에 따라 유효성 검사 오류 메시지를 반환합니다.

따라서 모든 API 경로를 그룹화하고 lang 쿼리 매개변수를 기반으로 앱 로케일을 설정하는 경로 미들웨어를 만들었습니다.

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class ChangeLocale
{
    /**
     * Handle an incoming request.
     */
    public function handle(Request $request, Closure $next): Response
    {
        $locale = $request->query('lang');

        if ($locale) {
            app()->setLocale($locale);
        }

        return $next($request);
    }
}



그리고 경로 파일에서:

// routes/api.php

use App\Http\Middleware\ChangeLocale;
use Illuminate\Support\Facades\Route;

Route::middleware(ChangeLocale::class)->group(function (): void {
    // ROUTES
});


이제 유효성 검사 메시지가 요청된 로케일로 표시됩니다. 쿼리 매개변수에 대한 처리가 마음에 들지 않으면 항상 헤더나 다른 것을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

$locale = $request->header('Accept-Language');


읽어주셔서 감사합니다! 이 내용이 흥미로웠다면 ❤️, 🦄 을(를) 남기고 물론 공유하고 의견을 댓글로 달아주세요!

Lloyds는 파트너십에 사용할 수 있으며 새로운 프로젝트에 개방되어 있습니다. 우리에 대해 더 알고 싶다면 check us out .

또한 Facebook에서 우리를 팔로우하는 것을 잊지 마세요!

좋은 웹페이지 즐겨찾기