Laravel 9로 Secured Rest API 프로젝트를 빠르게 시작하는 방법은 무엇입니까?
33283 단어 webdevtutoriallaravelprogramming
라라벨 9에서 REST API 만들기
오늘은 라라벨 9에서 REST API를 만드는 방법에 대해 설명하겠습니다. 이번 영상에서는 REST API를 이용한 CRUD Operation에 대해 설명하겠습니다.
라라벨 9 설치.
그런 다음 Editor에서 코드를 엽니다.
1 단계
마이그레이션으로 모델
Post
을 생성합니다.php artisan make:model Post -m
다음 업데이트 마이그레이션 파일은
database/migrations
폴더에 있습니다.<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->longText('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
};
다음으로 Model fillable 속성을 업데이트합니다
app/models/Post.php
.<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = ['title', 'description'];
}
2 단계
이제 명령을 실행하여 컨트롤러 생성
php artisan make:controller Api\\PostController --model=Post
이 명령은
app/Http/Controllers/Api/PostController.php
에 파일을 생성합니다.파일을 열고 아래 코드를 업데이트합니다.
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StorePostRequest;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = Post::all();
return response()->json([
'status' => true,
'posts' => $posts
]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(StorePostRequest $request)
{
$post = Post::create($request->all());
return response()->json([
'status' => true,
'message' => "Post Created successfully!",
'post' => $post
], 200);
}
/**
* Display the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function show(Post $post)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function edit(Post $post)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function update(StorePostRequest $request, Post $post)
{
$post->update($request->all());
return response()->json([
'status' => true,
'message' => "Post Updated successfully!",
'post' => $post
], 200);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function destroy(Post $post)
{
$post->delete();
return response()->json([
'status' => true,
'message' => "Post Deleted successfully!",
], 200);
}
}
3단계
이제 아래 명령을 실행하여 데이터 유효성 검사 요청을 생성해 보겠습니다.
php artisan make:request StorePostRequest
이제
app/Http/Requests/StorePostRequest.php
에서 파일을 열고 아래 코드를 업데이트합니다.<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
"title" => "required|max:70",
"description" => "required"
];
}
}
4단계
이제
routes/api.php
에서 API 경로를 생성합니다.<?php
use App\Http\Controllers\Api\PostController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::apiResource('posts', PostController::class);
이제 애플리케이션을 제공하고 우편 배달부에서 URL을 엽니다.
결과는 다음과 같습니다.
LARAVEL SANCTUM을 사용하여 LARAVEL 9에서 REST API 인증 만들기
Laravel Sanctum은 SPA(단일 페이지 애플리케이션), 모바일 애플리케이션 및 간단한 토큰 기반 API를 위한 초경량 인증 시스템을 제공합니다.
설치 단계
라라벨 9을 사용하지 않는 경우 라라벨 생텀을 설치해야 합니다. 그렇지 않으면 설치 단계를 건너뛸 수 있습니다.
1 단계
작성기를 통해 설치
composer require laravel/sanctum
2 단계
Sanctum 서비스 공급자 게시
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
3단계
데이터베이스 마이그레이션
php artisan migrate
라라벨에서 SANCTUM 사용하기
App\Models\User의 사용자 HasApiTokens 특성
Sanctum을 사용하려면 User Model에서
HasApiTokens
Trait Class를 사용해야 합니다.사용자 모델은 다음과 같아야 합니다.
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
API 인증 경로
API와 관련된 모든 인증을 처리하기 위해 생성
AuthController
php artisan make:controller Api\\AuthController
routes\api.php
파일에서 API 업데이트Route::post('/auth/register', [AuthController::class, 'createUser']);
Route::post('/auth/login', [AuthController::class, 'loginUser']);
이제 다음으로 업데이트
AuthContoller
<?php
namespace App\Http\Controllers\Api;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
/**
* Create User
* @param Request $request
* @return User
*/
public function createUser(Request $request)
{
try {
//Validated
$validateUser = Validator::make($request->all(),
[
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required'
]);
if($validateUser->fails()){
return response()->json([
'status' => false,
'message' => 'validation error',
'errors' => $validateUser->errors()
], 401);
}
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password)
]);
return response()->json([
'status' => true,
'message' => 'User Created Successfully',
'token' => $user->createToken("API TOKEN")->plainTextToken
], 200);
} catch (\Throwable $th) {
return response()->json([
'status' => false,
'message' => $th->getMessage()
], 500);
}
}
/**
* Login The User
* @param Request $request
* @return User
*/
public function loginUser(Request $request)
{
try {
$validateUser = Validator::make($request->all(),
[
'email' => 'required|email',
'password' => 'required'
]);
if($validateUser->fails()){
return response()->json([
'status' => false,
'message' => 'validation error',
'errors' => $validateUser->errors()
], 401);
}
if(!Auth::attempt($request->only(['email', 'password']))){
return response()->json([
'status' => false,
'message' => 'Email & Password does not match with our record.',
], 401);
}
$user = User::where('email', $request->email)->first();
return response()->json([
'status' => true,
'message' => 'User Logged In Successfully',
'token' => $user->createToken("API TOKEN")->plainTextToken
], 200);
} catch (\Throwable $th) {
return response()->json([
'status' => false,
'message' => $th->getMessage()
], 500);
}
}
}
인증으로 API를 보호하려면 auth:sanctum 미들웨어를 사용해야 합니다.
Route::apiResource('posts', PostController::class)->middleware('auth:sanctum');
결과는 다음과 같습니다.
전체 자습서는 비디오 아래에 있습니다.
REST API를 만드는 동안 문제가 발생하면 쿼리를 댓글로 남겨주세요.
읽어 주셔서 감사합니다
나에게 연락하십시오.
Reference
이 문제에 관하여(Laravel 9로 Secured Rest API 프로젝트를 빠르게 시작하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shanisingh03/how-to-quickstart-secured-rest-api-project-with-laravel-9--4dh7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)