coyangi
코딩하는 고양이
coyangi
전체 방문자
오늘
어제
  • 분류 전체보기 (23)
    • 🚀 Daily Life (1)
      • 덕질 (1)
      • 회고 (0)
    • 🍎 MAC OS (1)
    • 🔫 Algorithm (1)
      • Goormlevel (0)
    • 🌈 Programming (18)
      • Dart (7)
      • ETC (1)
      • Flutter (4)
      • Git (0)
      • Javascript (1)
      • Laravel (3)
      • PHP (2)
    • 🌎 Server (1)
    • 🧠 Database (0)
      • MySQL (0)
    • 💻 Computer Science (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Class
  • 맥
  • ajax
  • 알고리즘
  • 앱
  • Sizedbox
  • Laravel
  • json
  • crud
  • Server
  • 플루터
  • HOBBY FAIR
  • Instance
  • 라라벨
  • 웹서버
  • XAMPP
  • 덕질
  • dart
  • 인자
  • CENTER
  • argument
  • constructor
  • 데이터 구조
  • flutter
  • config
  • 서버구축
  • parameter
  • Containe
  • php
  • override

최근 글

티스토리

개인정보

  • 티스토리 홈
  • 스토리
  • 포럼
  • 로그인
hELLO · Designed By 정상우.
coyangi

코딩하는 고양이

[Laravel] JSON with Ajax 리스트 만들기 (1)
🌈 Programming/Laravel

[Laravel] JSON with Ajax 리스트 만들기 (1)

2022. 5. 23. 18:32

📒 MVC(Model View Controller) 기본 셋팅

1. Laravel 프로젝트 생성

우선 cmd 창 혹은 git bash 에서 경로를 지정한 후
컴포저를 사용하여 8.x 버전의 라라벨 프로젝트를 생성합니다.

composer create-project laravel/laravel="8.x" json_ajax_list

2. Layouts 폴더 및 View 파일 생성

resources/views 폴더 안에 layouts 폴더를 만든 후 app.blade.php 파일을 생성합니다.

<!doctype html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>API LIST</title>
</head>
<body>
    @section('container')
    @show
</body>
</html>

views 폴더 안에 메인 화면으로 사용할 index.blade.php 파일을 생성합니다.

@extends('layouts.app')

@section('container')
    <h1>Hello World</h1>
@stop

web.php 파일에 아래와 같이 라우터를 설정합니다.

Route::get('/', function () {
    return view('home');
});

3. Model 파일 생성 및 Migration 작업

php artisan make:model Board -m 명령어를 입력해 모델과 마이그레이션 파일을 생성합니다.
Board 모델이 생성되면 파일을 열어 아래와 같이 입력합니다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Board extends Model
{
    use HasFactory;
    protected $fillable = ['title', 'content'];
}

create_boards_table.php 마이그레이션 파일을 열어 아래와 같이 입력한 후

php artisan migrate --path=database/migrations/2022\_05\_24\_010601\_create\_boards\_table.php 명령어로 테이블을 생성합니다.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBoardsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('boards', function (Blueprint $table) {
            $table->id();
            $table->string('title')->coment('게시판 제목');
            $table->longText('content')->comment('게시판 내용');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('boards');
    }
}

4. 테스트 데이터 생성

팩토리를 사용하여 테스트용 데이터를 생성하겠습니다.

php artisan make:factory BoardFactory 명령어를 입력해
database/factories 폴더 안에 BoardFactory 파일을 생성합니다.
파일이 생성되었으면 아래와 같이 입력합니다.

  • • 참고 자료 :
    https://laravel.kr/docs/8.x/database-testing#creating-factories
    https://github.com/fzaninotto/Faker
<?php

namespace Database\Factories;

use App\Models\Board;
use Illuminate\Database\Eloquent\Factories\Factory;

class BoardFactory extends Factory
{
    protected $model = Board::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'title'=>$this->faker->word,
            'content'=>$this->faker->paragraph,
        ];
    }
}

터미널에서 php artisan tinker 명령어를 입력한 후

App\\Models\\Board::factory()->count(10)->create();
를 입력해 10개의 데이터를 생성합니다.

Boards 테이블로 이동하여 생성된 데이터를 확인합니다.

5. Controller 생성

터미널에서 ctrl + c 로 tinker 를 종료시킨 후
php artisan make:controller Api/BoardController
명령어로 BoardController.php 파일을 생성합니다.
파일이 생성되었으면 아래와 같이 입력합니다.

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Board;
use Illuminate\Http\Request;

class BoardController extends Controller
{
    public function index(){
        $lists = Board::all();
        return response()->json($lists, 200);
    }

    public function show(Board $id): \Illuminate\Http\JsonResponse
    {
        return Response()->json([
            'id' => $id
        ], 200);
    }
}

6. Route 설정

routes\api.php 파일을 열어 아래와 같이 입력합니다.

<?php

use App\Http\Controllers\Api\BoardController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});
Route::get('/board', [BoardController::class, 'index']);
Route::get('/board/{id}', [BoardController::class, 'show']);

7. API 확인

터미널에 php artisan serve 를 입력하여 서버를 활성화시킨 후
http://127.0.0.1:8000/api/board 페이지에서 데이터를 확인합니다.

파라미터 값을 추가했을 때도 데이터가 화면상에 잘 출력 되는지 확인합니다.

'🌈 Programming > Laravel' 카테고리의 다른 글

[Laravel] .env 파일 설정으로 개발용, 서비스용 URL 나누기  (0) 2023.06.30
[Laravel] Ajax로 CRUD 게시판 만들기 (1)  (0) 2022.05.26
    '🌈 Programming/Laravel' 카테고리의 다른 글
    • [Laravel] .env 파일 설정으로 개발용, 서비스용 URL 나누기
    • [Laravel] Ajax로 CRUD 게시판 만들기 (1)
    coyangi
    coyangi
    경기도 모 창고에서 은둔하다 양지 바른 땅으로 올라온 고양이

    티스토리툴바