증기 실전 2 - MVC

2195 단어
Vapor 네트워크 프레임 워 크 의 코드 디자인 모델 은 MVC 를 따 릅 니 다. 새 파일 을 만 들 때 해당 하 는 폴 더 에 넣 어야 합 니 다. 그렇지 않 으 면 vapor build 에서 오 류 를 알 릴 수 있 습 니 다. 코드 파일 구 조 를 보십시오.
// M
.
├── App
.   └── Models
.       └── User.swift
// V
.
├── App
└── Resources
    └── Views
         └── user.html
// C
.
├── App
.   └── Controllers
.       └── UserController.swift

Model
새로운 데이터 모델 류 는 Fluent 프레임 워 크 안의 Model 류 를 계승 해 야 한다. 한편 으로 는 편리 JSON 데이터 의 전환 이 고 다른 한편 으로 는 데이터 베이스 와 연결 하 는 데 편리 하 다.
상속 자 Model 의 종 류 는 다음 과 같은 몇 가 지 를 주의해 야 한다.
  • 멤버 변 수 를 추가 해 야 합 니 다. id
  • 다음 과 같은 두 가지 방법 을 실현 해 야 한다.
    init(node: Node, in context: Context)
    
    func makeNode(context: Context)
    
  • 반드시 협의 var id:Node? 안의 2 가지 방법 을 실현 해 야 한다. 데이터 베 이 스 를 조작 하 는 데 사용 되 는 것 이다. 데이터 베 이 스 를 조작 하지 않 으 면 바로 빈 공간 에서 실현 하면 된다.
    func prepare(_ database: Database)
    
    func revert(_ database: Database)
    
  • View
    보기 파일 은 폴 더 Preparation 의 하위 폴 더 에 저 장 됩 니 다. Resources 파일 일 수도 있 고 탭 언어 파일 일 수도 있 습 니 다. 템 플 릿 항목 의 보기 파일 은 View 접미사 입 니 다.
    보기 파일 을 다 쓴 후에 html 함수 로 접근 할 수 있 습 니 다. 예 를 들 어:
    drop.get("html") { request in 
      return try drop.view.make("index.html")
    }
    

    Controller
    컨트롤 러 는 주로 코드 디 결합 을 편리 하 게 하고 서로 다른 업무 논 리 를 서로 다른 컨트롤 러 에 넣 습 니 다.
    간단 한 컨트롤 러 는 아래 와 같이 사용 할 수 있 습 니 다.
    final class HelloController { 
        func sayHello(_ req: Request) throws -> ResponseRepresentable { 
           guard let name = req.data["name"] else { 
                throw Abort.badRequest 
           } 
          return "Hello, \(name)" 
        }
    }
    

    그리고 leaf 상기 컨트롤 러 방법 을 설명 합 니 다.
    let hc = HelloController();
    drop.get("hello", hc.sayHello);
    

    이렇게 프로젝트 를 실행 하면 drop.view.make() 을 통 해 main.swift 방법 에 접근 할 수 있다.
    demo
    https://github.com/AbooJan/VaporDemo

    좋은 웹페이지 즐겨찾기