> 백엔드 개발 > PHP 튜토리얼 > Laravel을 사용하여 휴식 자원을 구축하십시오

Laravel을 사용하여 휴식 자원을 구축하십시오

William Shakespeare
풀어 주다: 2025-02-20 11:50:10
원래의
525명이 탐색했습니다.

Laravel을 사용하여 휴식 자원을 구축하십시오 이 부분에서는 나머지 인터페이스에서 작업하기 시작합니다. Laravel에서 REST API를 만드는 것은 그리 어렵지 않습니다. 우리가 명심해야 할 것은 Emberjs를 다루고 있으며 새로운 어댑터를 처음부터 쓰고 싶지 않다는 것입니다. 평소와 같이, 당신은 github 에서이 부분의 소스 코드를 찾을 수 있습니다.

. 키 테이크 아웃

ember.js 컨벤션을 활용하여 Laravel을 사용하여 REST API를 구축하여 호환성을 보장하고 개발 프로세스를 간소화하십시오. CRUD 작업을 수동으로 정의 할 필요없이 RESTFUL 리소스를 효율적으로 관리하기 위해 Artisan Command-Line 도구를 사용하여 Laravel에서 리소스 컨트롤러를 작성하십시오. Laravel의 특정 네임 스페이스로 그룹화하여 API 구조 및 접근성을 향상시켜 경로를 효과적으로 구성합니다. 컨트롤러에서 오류 처리 및 응답 서식을 구현하여 데이터 검색을 관리하고 강력한 API 엔드 포인트를 보장합니다. Laravel의 웅변 및 API 리소스 클래스를 활용하여 모델 데이터를 JSON 응답으로 변환하여 Ember.js와 같은 프론트 엔드 프레임 워크와 쉽게 통합됩니다.

> 어디서부터 시작해야합니까? 그것은 어려운 질문입니다. Ember는 고유 한 워크 플로와 논리를 가지고 있습니다. 우리가 그 논리를 염두에두고 휴식을 시작하면 시간을 절약 할 수있을 것입니다. 좋은 건축과 재사용 할 수있는 것들이 있습니다. Ember가 REST 아키텍처로 좋은 선택을했다고 생각합니다. Ember가 데이터를 어떻게 기대하는지 살펴보십시오 사용자를 검색하고 싶다고 가정 해 봅시다. Ember는 다음과 같은 것을 기대합니다

사용자 목록을 검색하려면 Ember는 다음과 같은 JSON을 기대할 것입니다.

첫 번째는 "사용자"가 필요하지만 두 번째는 "사용자"가 필요합니다. 두 번째는 복수입니다. Ember도 그 규칙을 제시했습니다. 다음을 사용하여 복수를 직접 지정하지 않는 경우
    emberjs는 가정을하고“공식”을 요청합니다. 때로는 프레임 워크 자체가 그러한 것들을 제공하는 것이 좋지만 반면에 이러한 세부 사항을 잊어 버리면 상황이 통제되지 않아도됩니다.
  • . Ember와 더 깊이 모욕하기 전에 경고 : Ember는 어렵고 강력합니다. 시간을내어 어떻게 작동하는지 배우십시오.
  • 우리가 물건을 조금 복잡하게하고 객체 사이에 관계를 둔 경우, 예를 들어, 우리는 사용자에게 사진이 있다고 말합니다. 우리는 어떻게 그것을 출력 할 것인가?
  • 이것은 일대일 관계입니다. 우리가 사용자를 요청하면 그의 사진도 가져옵니다. 우리는 이미 Laravel에서 일부 관계를 설정했으며, 원한다면 그것들을 사용하고 Ember와의 관계를 소비 할 수 있습니다.
  • . 나는이 프레임 워크가 데이터를 원하는 방법을보기 위해 Ember와 함께 시작했습니다. 구조를 구축하는 방법을 알고 있다면 더 쉽습니다. 데이터베이스에서 유효성 검사 및 데이터를 얻는 것은 쉽지만 견고한 REST 인터페이스와 스마트 인터페이스를 구축하는 것은 어려운 부분입니다.
  • 나머지 준비 무언가를 개발할 때 모형이 매우 도움이 될 수 있습니다. 당신이 전문가 프로그래머이고 Photoshop이나 gimp를 다루는 것을 싫어하더라도 프로토 타이핑을위한 좋은 도구가 있습니다. 나는 Balsamiq을 사용했고 내 프론트 페이지 프로토 타입은 다음과 같습니다

    빌딩을 시작하겠습니다. Open /app/views/index.php. 이것은 단일 페이지 앱 역할을합니다. 우리는이 시리즈의 첫 번째 부분 에서이 파일을 만들었습니다.

    이것을 설명 할 수 있습니다. NAV 태그는 내비게이션을 담당합니다. 클래스 제목 영역이있는 UL 태그는 응용 프로그램의 첫 번째 레벨과 연결되는 로고로 사용되는 텍스트입니다. 또한 카테고리 목록이있는 드롭 다운도 추가했습니다. 더 배우고 싶다면 Foundation 5 Docs로 가십시오. 대부분의 경우 복사/붙여 넣기 작업 이므로이 부분에 대해 걱정하지 마십시오.

    또한 콘텐츠 영역에 Foundation의 그리드 시스템을 사용했습니다. 이것은 모든 정보로 채워져 있으며 탐색하는 동안 변경됩니다. 모든 내부 업데이트는 Ember가 처리합니다. 우리는 여기에 3 개의 템플릿 만 빌드 할 것입니다. 하나는 사용자 용, 하나는 단일 사진 용이고 하나는 방문 페이지를위한 것입니다. Laravel을 사용하여 휴식 자원을 구축하십시오 모든 코드가 스크립트 태그 내부에 있음을 알았습니까? Ember는 핸들 바를 템플릿 언어로 사용합니다. 텍스트 유형/x handlebars는 특별한 유형의 스크립트입니다. Ember와 Handlebars를 잠시 사용한 경우 템플릿 이름을 사용했을 것입니다. 이 템플릿은 모든 응용 프로그램의 컨테이너로 사용 되므로이 템플릿에 사용되기 때문에이 템플릿에는 지정하지 않습니다. 이름을 지정하지 않으면 Ember가 이름을 응용 프로그램 템플릿으로 사용합니다.

    리소스 컨트롤러 이 매우 간단한 앱을 개발하면서 REST API를 개발할 때 리소스 컨트롤러가 유용하다는 것을 알았습니다. 이것이 바로 나머지 아키텍처의 요점입니다. 모든 것이 자원입니다. 모든 리소스에는 HTTP 동사가 적용될 수 있습니다 : Get, Post, Delete, Put (업데이트). 모든 동사가 필요한 것은 아닙니다.

    이것은 우리가 Artisan을 통해 리소스 컨트롤러를 만드는 방법입니다. 옵션은이 컨트롤러 에서이 두 가지 방법을 제외합니다. 생성 및 편집 방법이 필요하지 않습니다. 생성 메소드는 해당 리소스를 작성하는 그래픽 인터페이스를 처리합니다. 우리가 한 페이지 앱을 만들려면 Ember 외부에서보기를 만드는 것이 현명하지 않습니다.
    {
          "user": {
            "firstName": "firstName",
            "lastName": "lastName"
          }
        }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    . 카테고리에 대한 다른 리소스 컨트롤러를 만듭니다. 보시 다시피이 컨트롤러에는 표시 및 색인 메소드 만 사용할 수 있습니다. 개별 카테고리를 보여주고 모든 카테고리를 검색하는 것이 충분하다고 생각합니다.

    {
          "user": {
            "firstName": "firstName",
            "lastName": "lastName"
          }
        }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    다른 컨트롤러는 이미지 컨트롤러입니다. 이미 이미지 컨트롤러가있는 이유는 무엇입니까? 이미지를 제공하려면 엔드 포인트가 필요하기 때문입니다. Dropbox는 이미지를 보유하고 있지만 외부에서 이미지에 액세스 할 수 없습니다. 폴더를 공개하려면 지불해야합니다. 그것이 첫 번째 이유입니다. 두 번째 이유는 모든 이미지가 공개되는 것을 원하지 않기 때문입니다. 간단히 말해서,이 컨트롤러는 Dropbox에서 이미지를 가져 와서 클라이언트에게 제공합니다.

    그리고 마지막은 UserController : 입니다
    {
          "users": 
          [
              {
                "firstName": "firstPersonsName",
                "lastName": "lastname"
              },
              {
                "firstName": "secondPersonName",
                "lastName": "lastName"
              }
          ]
        }
    로그인 후 복사
    로그인 후 복사

    경로 이제 컨트롤러가 있으므로 해당 컨트롤러를 관련 경로와 연결해야합니다. /app/routes.php를 업데이트하겠습니다. 먼저, Route :: Group을 사용하여 URL 네임 스페이스 내부에 그룹화하십시오.

    여기서 우리는 접두사 인 네임 스페이스를 지정했습니다. 이 그룹 내부에있는 모든 것은 다음과 같이 액세스 할 수 있습니다 :
    Ember.Inflector.inflector.irregular('formula', 'formulae');
    로그인 후 복사

    또한 해당 그룹 내에 필터를 지정할 수 있습니다. 예를 들어, Auth :: OneBasic ( 'username') 필터를 추가하거나 하나를 만들고이 그룹에 추가 할 수 있습니다. 다른 인증도 사용할 수 있습니다.

    해당 그룹 내부에 3 개의 컨트롤러를 추가하십시오. Photocontroller, UserController 및 CategoryController

    해당 그룹 외부에서 ImagesController를 추가하십시오. 이 컨트롤러는 네임 스페이스가 필요하다고 생각하지 않습니다. 이미지는 이미지이며 네임 스페이스를 제공 할 필요는 없습니다.

    결국, /app/routes.php 파일은 다음과 같아야합니다.
    {
          "user": {
            "id": 1,
            "name": "firstName",
            "lastname": "lastname,
            "photos": [1, 2, 3]
          },
        
          "photos": 
          [
              {
                "id": 1,
                "title": "Lorem Ipsum"
              },
              {
                "id": 2,
                "title": "Lorem Ipsum"
              }
          ]
        }
    로그인 후 복사
    로그인 후 복사
    ember의 요구 사항으로 인해 리소스 이름이 복수임을 알 수 있습니다. 해당 컨트롤러를 채우는

    이제 우리는 무언가를 만들기 시작할 수 있습니다. 나는 모든 것을 설명하기가 매우 어렵 기 때문에 여기에서 Rest에 관한 모든 것을 다루지 않을 것입니다. 더 깊이 더 많은 것을 찾으려면이 시리즈를 참조하십시오. 사진 컨트롤러부터 시작하겠습니다.

    index () 메소드는 데이터베이스에서 최신 사진을 반환해야합니다. 여기서 우리는 페이지 매김을 할 수 있지만 너무 복잡해지기를 원하지 않습니다. 의견에 충분한 관심이 있으면 향후 기사 에서이 응용 프로그램을 업데이트하겠습니다.
    <script type="text/x-handlebars">
        
            <!-- The navigation top-bar -->
            <nav  data-topbar>
    
                <ul >
                    <li >
                        <h1><a href="#">Photo Upload</a></h1>
                    </li>
                </ul>
    
                <section >
    
                    <!-- Left Nav Section -->
                    <ul >
                        <li >
                            <a href="#">Categories</a>
                            <ul >
                                <li><a href="#">Category1</a></li>
                                <li><a href="#">Category2</a></li>
                                <li><a href="#">Category3</a></li>
                                <li><a href="#">Category4</a></li>
                            </ul>
                        </li>
                    </ul>
    
                </section>
    
                <div ></div>
                
            </nav><!-- END Navigation -->
            
            <!-- Content -->
            <div style="margin-top: 50px;">
                <!-- The content will be here -->
            </div><!-- END Content -->
    
        </script>
    로그인 후 복사
    로그인 후 복사
    .

    이것을 설명하겠습니다. 나는 시도, 잡기, 마지막으로 모든 것을 삽입했습니다. 무언가 잘못되면 상태 코드로 다른 JSON을 반환합니다.

    이것은 데이터베이스에서 9 장의 사진을 가져옵니다. 그런 다음 모든 사진을 찍고 나중에 JSON 형식으로 변환 될 형식 배열로 표시합니다. 모든 것이 잘 진행되거나 웅변으로 예외가 발생하지 않으면 올바른 출력이 표시됩니다. 특정 상태 코드를 표시하려면 Eloquent가 던질 수있는 모든 예외를 찾아 올바른 상태 코드를 표시하십시오. 지금 Show () 메소드를 작성하겠습니다. 다시, 우리는 주어진 ID로 사진에 대한 모든 정보를 검색하려고합니다.

    php artisan controller:make PhotoController --except=create,edit
    로그인 후 복사
    자신의 앱을 구축 할 때는 사용자 입력에 유효성 검사를 추가하는 것을 잊지 마십시오. usercontroller의 논리는 거의 동일합니다. 이번에는 사용자 모델을 요청합니다.

    모든 것이 거의 동일하며 모델과 필드 만 변경됩니다. 출력 json. 쇼 메소드는 다음과 같이 보일 것입니다 :
    {
          "user": {
            "firstName": "firstName",
            "lastName": "lastName"
          }
        }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사

    이 함수는 주어진 ID를 가진 사용자를 검색합니다 우리가 다루는 마지막 컨트롤러는 ImagesController입니다. 논리는 파일 시스템에서 이미지를 잡고 서빙하는 것만 큼 간단합니다. 파일을 저장하고 로컬 파일 시스템 또는 서버 파일 시스템으로 검색 할 때 간단합니다. 불행히도 파일을 Heroku에 저장할 수 없으므로 Dropbox를 사용 하여이 엔드 포인트에서 해당 파일을 제공합니다. Dropbox 클라이언트와 Flysystem 어댑터를 가져옵니다. 환경이 현지인 경우 로컬 어댑터와 함께 플라이 시스템을 사용합니다. 환경이 생산되는 경우 Dropbox 어댑터를 사용하십시오. 이 컨트롤러 내부의 개인 변수에 Flysystem 클래스를 지정하십시오.

    {
          "users": 
          [
              {
                "firstName": "firstPersonsName",
                "lastName": "lastname"
              },
              {
                "firstName": "secondPersonName",
                "lastName": "lastName"
              }
          ]
        }
    로그인 후 복사
    로그인 후 복사
    쇼 메소드는 해당 파일을 제공하고 파괴 방법은 해당 파일을 파일 시스템에서 삭제합니다. 이 라이브러리를 사용하면 앱에 추상화 수준을 올렸습니다.

    Destroy () 함수는 매우 간단합니다. 삭제 방법을 사용하고 삭제할 파일의 이름을 전달하여 해당 파일을 선택하십시오. 파일을 찾을 수없는 경우 404를 반환합니다.

    결국, imagecontroller는 다음과 같이 보일 것입니다 :

    우리가 제공 한 형식은 HTML입니다. 좋아, 조금 이상해. 우리는 HTML이 아니라 이미지를 제공하고 싶었습니다. 그러나 브라우저에서 파일 형식을 찾고 해당 파일을 사용하는 방법을 인식하기 때문에 문제가되지 않습니다. 계속해서 CategoryController를 만들어보십시오. 나는 당신을위한 운동으로 그것을 남겼습니다.

    api Ember.Inflector.inflector.irregular('formula', 'formulae'); 테스트 나는 phpstorm을 좋아하고, 나머지 API를 테스트하기 위해 REST Client라는 도구를 사용한다는 것을 인정해야합니다. 테스트를 단순화하는 그래픽 인터페이스입니다. 원하는 경우 터미널에서 컬을 사용할 수도 있습니다. 몇 가지 테스트를하겠습니다 :

    그리고 이것은 반환 된 것입니다 :

    {
          "user": {
            "id": 1,
            "name": "firstName",
            "lastname": "lastname,
            "photos": [1, 2, 3]
          },
        
          "photos": 
          [
              {
                "id": 1,
                "title": "Lorem Ipsum"
              },
              {
                "id": 2,
                "title": "Lorem Ipsum"
              }
          ]
        }
    로그인 후 복사
    로그인 후 복사
    Phpstorm의 REST 클라이언트를 사용하면 JSON에서 동일한 결과를 얻습니다.

    그리고 결과를 더 나은 형식으로보고 싶다면 도구의 왼쪽에있는 JS 아이콘을 단순히 누를 수 있으며 나머지 클라이언트는 더 좋은 표현을 제공합니다.
    <script type="text/x-handlebars">
        
            <!-- The navigation top-bar -->
            <nav  data-topbar>
    
                <ul >
                    <li >
                        <h1><a href="#">Photo Upload</a></h1>
                    </li>
                </ul>
    
                <section >
    
                    <!-- Left Nav Section -->
                    <ul >
                        <li >
                            <a href="#">Categories</a>
                            <ul >
                                <li><a href="#">Category1</a></li>
                                <li><a href="#">Category2</a></li>
                                <li><a href="#">Category3</a></li>
                                <li><a href="#">Category4</a></li>
                            </ul>
                        </li>
                    </ul>
    
                </section>
    
                <div ></div>
                
            </nav><!-- END Navigation -->
            
            <!-- Content -->
            <div style="margin-top: 50px;">
                <!-- The content will be here -->
            </div><!-- END Content -->
    
        </script>
    로그인 후 복사
    로그인 후 복사
    .

    삭제 및 게시와 같은 다른 동사를 테스트 할 수도 있습니다. 계속해서 가능한 한 많이 테스트하십시오. 테스트에 사용할 수있는 다른 클라이언트가 있습니다. REST CONSOLE과 POSTMAN은 그 중 두 명입니다. 첫 번째는 Chrome에서만 사용할 수 있으며 두 번째는 Postman은 Chrome 및 Firefox에서 제공됩니다. 우체부는 더 간단하고 사용자 친화적 인 것 같습니다. 계속해서 그들에게 시도해보십시오.

    결론 Laravel은 자원 컨트롤러를 사용하여 REST API를 구축하기위한 작업을 단순화합니다. Ember 규칙을 사용하여 인터페이스를 어떻게 구축 해야하는지 보았습니다. Ember는 좋은 인터페이스를 선택했으며 해당 논리를 고수함으로써 다른 플랫폼에서 코드를 쉽게 재사용 할 수 있습니다.

    이 부분에서는 개념에 더 집중했고 코딩을 너무 많이하지 않았습니다. 모든 방법을 채우고 유효성 검사를 추가하면 이미 충분히 길고 긴 시리즈 일 때이 게시물이 불필요하게 확장되었습니다. 개발할 때는 항상 입력을 검증해야합니다. 그것을 잊지 말고 테스트, 테스트, 테스트. 테스트는 가장 친한 친구 여야합니다.

    이 시리즈의 최종 설치에서 우리는 모든 기능을 완전히 기능하는 라이브 응용 프로그램으로 합류 할 것입니다.

    laravel 로 휴식 자원을 구축하는 것에 대해 자주 묻는 질문 Laravel에서 리소스 컨트롤러를 만드는 방법은 무엇입니까?

    Laravel에서는 Artisan Command-Line 도구를 사용하여 리소스 컨트롤러를 만들 수 있습니다. 명령은 PHP Artisan Make : Controller ControlLername -Resource입니다. "Control기 이름"을 컨트롤러에 제공하려는 이름으로 바꾸십시오. 이 명령은 필요한 모든 CRUD 작업을위한 메소드가있는 컨트롤러를 만듭니다. 컨트롤러의 이름은 단일 형식이어야하며 유효한 PHP 클래스 이름이어야합니다.

    Laravel Eloquent Resources의 목적은 무엇입니까?

    Laravel Eloquent Resources는 변환하는 데 사용됩니다. Eloquent ORM 모델 및 모델 컬렉션은 JSON 형식으로 수집됩니다. API 응답으로 보내려는 데이터의 정확한 모양과 형식을 제어 할 수 있으므로 API를 구축 할 때 특히 유용합니다. 데이터 출력을 제어 할 수있는 일관되고 관리 가능한 방법을 제공합니다.

    Laravel API 리소스를 사용하는 방법은 무엇입니까?

    Laravel API 리소스를 사용하려면 먼저 리소스 클래스를 만들어야합니다. 이것은 Artisan Command PHP Artisan Makes : Resource ResourceName을 사용하여 수행 할 수 있습니다. 리소스 클래스가 생성되면 리소스의 ToArray 메소드에서 변환을 정의 할 수 있습니다. 경로에서 리소스를 반환하려면 변환하려는 데이터를 전달한 리소스 클래스의 새 인스턴스를 반환합니다.

    Laravel Resource에서 반환 한 데이터를 어떻게 사용자 정의 할 수 있습니까?

    리소스 클래스에서 ToArray 메소드를 수정하여 Laravel Resource로 반환 된 데이터를 사용자 정의 할 수 있습니다. ToArray 메소드는 웅변 모델 속성을 API 응답 속성에 매핑하는 곳입니다. 필요에 따라 속성을 추가, 제거 또는 변경할 수 있습니다 Laravel의 리소스와 컬렉션의 차이점은 무엇입니까?

    Laravel에서 리소스 클래스는 JSON 구조로 변환 해야하는 단일 모델을 나타내며 리소스 컬렉션 클래스는 컬렉션을 나타냅니다. 자원의. 리소스 컬렉션은 모델 배열 또는 모델을 JSON으로 변환하는 데 사용됩니다.

    Laravel에서 리소스 컬렉션을 만드는 방법은 무엇입니까?

    Laravel에서 리소스 컬렉션을 만들려면 사용할 수 있습니다. 장인 사령부 PHP Artisan Make : 자원 자원 신지 수집 -수집. 컬렉션의 변환을 정의 할 수있는 리소스 컬렉션 클래스가 만들어집니다.

    라벨의 경로에서 리소스 컬렉션을 반환하려면 어떻게해야합니까?

    경로에서 리소스 컬렉션을 반환하려면 어떻게해야합니까? Laravel에서는 단순히 Resource Collection 클래스의 새로운 인스턴스를 반환하여 변환하려는 모델 모음을 전달합니다.

    Laravel의 리소스 응답에 메타 데이터를 추가 할 수 있습니까? . 예, Laravel의 리소스 응답에 메타 데이터를 추가 할 수 있습니다. 이것은 리소스의 메소드를 정의하여 수행 할 수 있습니다. With Method는 응답에 포함하려는 메타 데이터 배열을 반환해야합니다.

    Laravel 리소스의 조건부 속성을 어떻게 처리합니까?

    Laravel 리소스 자원 응답에 속성을 조건부로 추가하십시오. 메서드가 두 인수를 받아 들일 때 : 속성이 포함되어야하는지 결정하는 조건과 조건이 참이면 속성의 값. 그렇습니다. Laravel Resources는 Laravel의 내장 페이지 매김과 완벽하게 작동합니다. Laravel Eloquent Query를 Pagination하면 Laravel은 Pagination 링크와 함께 Paginated 결과를 포함하는 JSON 응답을 자동으로 반환합니다. Paginated Response를 사용자 정의하려면 리소스 컬렉션을 사용할 수 있습니다.

위 내용은 Laravel을 사용하여 휴식 자원을 구축하십시오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿