1.1.6 • Published 8 months ago

shooot v1.1.6

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

Shooot

저희의 Shooot 서비스 잘 사용하고 계신가요? shooot 라이브러리는 서비스와 연계하여 사용할 수 있습니다. 아직 가입 전이라면 방문해서 가입하고 당신만의 프로젝트, API 문서를 작성해보세요!

shooot.co.kr 방문하기

Service Worker 를 기반으로 작성하신 API 문서의 모킹 데이터(example response)를 반환해주는 라이브러리입니다.

0. 사전 준비

라이브러리를 적용하기 위한 프로젝트 환경을 준비해주세요. 여기서는 TypeScript 기반 React 프로젝트로 설명하고 있습니다.

# my-project 는 본인이 원하는 프로젝트 이름
npx create-react-app my-project --template typescript

# 프로젝트 이동
cd my-project

1. 라이브러리 설치

shooot 라이브러리를 본인의 프로젝트에 설치해보세요.

# shooot 라이브러리 설치
npm install shooot

# 구현된 service worker 의 동작
npx shooot init <DIR>
  • service worker 동작시키기 위해 설정해둔 init script 를 실행시켜 받아주세요
  • React, Vue 등의 프로젝트 환경이라면 public 폴더의 경로를, 외에는 원하는 파일의 경로를 입력해주세요

2. 시작

service worker 동작

import shooot from "shooot";

// src/index.tsx
if (process.env.NODE_ENV === "development") {
    shooot.register();
} else {
    shooot.unregister();
}

위의 예시는 프로젝트가 시작되는 순간 바로 service worker 를 활성화하기 위해 index.tsx 에서 등록 절차를 수행했어요. 원하는 곳에서, 원하는 환경에서 service worker 를 자유롭게 등록, 해제 해보세요.

3. Options

projectName

Type: string Default: undefined

shooot 서비스에 등록해주신 프로젝트의 영문명입니다. 이후의 mocking 을 하기 위해서는 projectName 을 등록해주셔야만 합니다.

import shooot from 'shooot';

...

await shooot.axios.get(`https://${shooot.projectName}.com/url`);

본인의 프로젝트의 도메인에 projectName 이 포함되거나 하는 등의 경우에서 사용할 수 있습니다.

axios

라이브러리의 axios 는 기존의 axios 를 활용하고 있습니다. 따라서, 기존 axios 가 제공하는 모든 기능을 그대로 사용할 수 있습니다.

await shooot.axios.get("url",
    { // configs
        params: {
            "testcase": 3,
            ...
        },
        ...
    }
)

await shooot.axios.post("url",
    { ... }, // data(body)
    { // configs
        params: {
            "testcase": 2,
            ...
        },
        ...
    }
)

// put, patch, delete 도 동일한 형태

기존의 axios 에 한 가지 기능이 추가되었습니다. 저희 서비스를 통해 API 문서를 작성하시면 API 마다 status code 별로 여러 가지의 케이스를 등록하실 수 있습니다. 그 테스트 케이스들 중에 몇 번째(1번부터 시작) 테스트 케이스의 mocking 을 원하는지 request parameter 로 담아주시면 service worker 의 동작 상태, api request 의 정보에 맞춰 동작합니다.

- service worker 가 동작중이면?
    - test case 정보를 담고 있는가? (n 이라 가정)
        - n 번째 test case 가 shooot 서비스에 등록되어 있는가?
            - n 번째 test case 의 example response 반환

        - n 번째 test case 가 shooot 서비스에 등록되어 있지 않는가?
            - 결과 반환이 불가능하다는 에러 반환

    - test case 정보를 담고 있지 않는가?
        - api 의 첫 번째 test case 확인 (status_code 오름차순 기준)
            - "200 OK" 에 대한 test case 가 등록되어 있는가?
                - "200 OK" 에 대한 example response 반환

            - "200 OK" 에 대한 test case 가 등록되어 있지 않는가?
                - test case 를 등록해달라는 에러 반환

- service worker 가 동작 중이지 않는가?
    - test case 정보를 담고 있는가?
        - test case 정보 제거 후 요청 전송

    - test case 정보를 담고 있지 않는가?
        - 그대로 요청 전송

4. Method

register

Parameters: none Returns: Promise\

service worker 를 등록하기 위한 메소드입니다. 브라우저마다 service worker 의 사용 가능 여부, 등록 결과 등의 결과를 콘솔에 출력해줍니다.

unregister

Parameters: none Returns: Promise\

service worker 를 등록 해제하기 위한 메소드입니다.

setConfigs

Parameters: "projectName: string" Returns: Promise\

service worker 가 동작하는 상황에서만 사용 가능합니다. 저희의 서비스에 가입하고 생성하신 프로젝트의 영문명을 매개변수로 넘겨주셔야 합니다. projectName 의 등록 여부를 판단하고 service worker 에게 적용시키게 됩니다.

import { useEffect } from 'react';
import shooot from 'shooot'

// src/App.tsx
function App() {
    const uploadConfig = async () => {
        await shooot.setConfig("project english name");
    }

    useEffect(() => {
        uploadConfig();
    }, []);

    return (
        ...
    )
}

export default App;

위의 예시는 App 컴포넌트에서 렌더링 후 즉시 등록하는 과정입니다.

1.1.6

8 months ago

1.1.5

8 months ago

1.1.4

8 months ago

1.1.3

8 months ago

1.1.2

8 months ago

1.1.1

8 months ago

1.1.0

8 months ago

1.0.39

8 months ago

1.0.38

8 months ago

1.0.37

8 months ago

1.0.36

8 months ago

1.0.35

8 months ago

1.0.34

8 months ago

1.0.33

9 months ago

1.0.32

9 months ago

1.0.31

9 months ago

1.0.30

9 months ago

1.0.29

9 months ago

1.0.28

9 months ago

1.0.27

9 months ago

1.0.26

9 months ago

1.0.25

9 months ago

1.0.24

9 months ago

1.0.23

9 months ago

1.0.22

9 months ago

1.0.21

9 months ago

1.0.20

9 months ago

1.0.19

9 months ago

1.0.18

9 months ago

1.0.17

9 months ago

1.0.16

9 months ago

1.0.15

9 months ago

1.0.14

9 months ago

1.0.13

9 months ago

1.0.12

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago