Cruky 라이브러리 첫 번째 README

6561 단어

정보



Cruky 은 API를 최대한 빨리 생성할 수 있도록 도와주는 dart 생태계용 서버 측 라이브러리입니다. 현대적인 스타일과 빠른 서버 측 앱을 만들고 싶습니다high performance.

내가 이것을 구축한 주된 이유는 모든 라이브러리가 dart lang이 아닌 Flutter 생태계에 초점을 맞추고 있기 때문입니다.
그리고 이것은 라이브러리가 (Django, FastAPI, Express, ..etc)와 같은 다른 프레임워크나 라이브러리보다 미래가 적습니다.
그래서 나는 Dart에 초점을 맞춘 새로운 라이브러리를 만들고 dart: mirrors와 code generators를 함께 사용하여 최대 성능을 얻어 dart를 최대한 활용하기로 결정했습니다.

Inspired by Pythod server-side frameworks (Django, Flask, FastAPI)


시작하다



이해하기 매우 명확한 예제 파일에서 todo 예제를 볼 수 있습니다.
  • Dart.dev에서 Dart 설치
  • dart pub global activate cruky_cli로 Cruky 패키지를 설치합니다.
  • dart create nameOfProject로 다트 프로젝트 생성
  • vscode
  • 와 같이 좋아하는 IDE로 프로젝트를 엽니다.
  • 그리고 시작하자

  • 진입점 앱 추가 시작

    import 'package:cruky/cruky.dart';
    
    class MyApp extends AppMaterial {
      @override
      List get routes => [
            exampleWithGETRequest,
          ];
    }
    


    이제 첫 번째 경로 방법을 추가해 보겠습니다.

    @Route.get('/')
    exampleWithGetRequest(ReqCTX req) {
      return Json({});
    }
    

    Route 주석을 추가하여 경로 경로를 지정하고 그 아래에 메서드를 추가하여 Future 메서드 또는 일반 메서드(비동기 또는 동기화)를 사용할 수 있습니다.

    메서드에서 데이터 반환



    지금은 목록 또는 맵을 반환할 수 있으며 현재 응답 콘텐츠 유형은 JSON입니다.

    특정 상태 코드 반환



    다음과 같이 맵과 함께 특정 상태 코드를 반환할 수 있습니다.

    @Route.get('/')
    exampleWithGetRequest(ReqCTX req) {
      return Json({}, 201);
    }
    


    이제 앱을 제공하세요



    이 코드로 간단한 앱을 제공할 수 있습니다.

    void main() => run(MyApp());
    


    이제 cruky run filename로 dart 파일을 실행합니다.

    그러면 hot-reload로 ./bin/filename.dart의 파일이 실행됩니다.

    You can run with another folder with cruky run filename -d example

    This will run the file in ./example/filename.dart



    이제 Cruky는 lib 폴더에 변경 사항이 있으면 hot-reload로 앱을 실행합니다.

    미들웨어를 추가하자



    이전 및 이후 미들웨어를 추가할 수 있습니다.
    before 미들웨어는 기본 경로 메서드 핸들러를 호출하기 전에 실행됩니다.
    그리고 after 미들웨어는 그 반대입니다.

    @BeforeMW()
    middlewareExample(ReqCTX req) {
      if (req.headerValue('Token') == null) {
        return Text('Not Auth', 401);
      }
    }
    

    MW는 MiddleWare의 줄임말입니다.
    주석은 미들웨어의 유형을 정의합니다. 두 가지 유형이 있습니다. BeforeMWAfterMW .

    다음 함수를 실행하지 않으려면 (기본 경로 방법) 예제와 같은 응답을 반환할 수 있습니다.

    이제 이 미들웨어를 앱의 전역 미들웨어에 추가하고 그 아래의 모든 경로에는 동일한 미들웨어가 있습니다.

    class MyApp extends AppMaterial {
      @override
      List get routes => [
            exampleWithGETRequest,
          ];
    
      @override
      List get middlewares => [middlewareExample]; /// add this
    }
    


    또는 다음과 같이 경로에 대한 미들웨어 범위를 추가할 수 있습니다.

    @Route.get('/', [middlewareExample])
    exampleWithGetRequest(ReqCTX req) {
      return Json({}, 201);
    }
    

    좋은 웹페이지 즐겨찾기