Nginx와 Dockerfile로 API 스텁 만들기

스텁이란?



프로그램의 모듈을 테스트할 때, 그 모듈이 호출하는 하위 모듈 대신에 사용하는 대용품입니다. 하위 모듈이 미완성이더라도 대신 스텁을 사용하여 테스트가 가능합니다. 잘 모의와 잘못 될 수 있지만, 모의와는 별도입니다.

이 기사에서는 외부 API를 이용하는 시스템을 구축할 때 그 API를 Nginx와 Dockerfile을 이용하여 쉽게 스텁화하는 방법을 소개합니다. API URL의 예로 다음 두 가지를 사용합니다.
  • /api/v1/users/
  • /api/v1/companys/

  • 스텁 파일 만들기



    "/api/v1/users/"라는 URL에서 다음과 같은 응답을 반환하는 API 스텁 파일을 만듭니다.

    users.json
    [
        {
            "id":"1",
            "first_name":"Test",
            "last_name":"Ichiro"
        },
        {
            "id":"2",
            "first_name":"Test",
            "last_name":"Jiro"
        }
    ]
    

    그런 다음 "/api/v1/companys/"라는 URL에서 다음과 같은 응답을 반환하는 API 스텁 파일도 만듭니다.

    companys.json
    [
        {
            "id":"1",
            "name":"Company1"
        },
        {
            "id":"2",
            "first_name":"Company2"
        }
    ]
    

    Nginx default.conf 만들기



    Docker의 Nginx 공식 이미지로 작성하므로 default.conf가 됩니다. 설정은 다음과 같습니다.

    default.conf
    server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        # ユーザー情報取得API
        location /api/v1/users/ {
            root   /usr/share/nginx/json;
            index  users.json;
        }
    
        # 企業情報取得API
        location /api/v1/companys/ {
            root   /usr/share/nginx/json;
            index  companys.json;
        }
    }
    

    처음에 소개한 두 개의 URL 위치를 나열합니다. 설정에 대한 자세한 내용은 "Nginx 정적 콘텐츠 제공"을 참조하십시오.

    Dockerfile 만들기



    Dockerfile을 다음과 같이 만듭니다.
    FROM nginx:latest
    
    ADD ./conf.d/default.conf /etc/nginx/conf.d
    ADD ./json /usr/share/nginx/json/
    

    작성한 각 파일의 디렉토리 구성



    지금까지 작성한 파일의 디렉토리 구성은 다음과 같이 합니다.
    ├─api-stub  ※作業ディレクトリ
    │  │  Dockerfile
    │  │
    │  ├─conf.d
    │  │      default.conf
    │  │
    │  └─json
    │      └─api
    │          └─v1
    │              ├─companys
    │              │      companys.json
    │              │
    │              └─users
    │                      users.json
    

    Docker 이미지 만들기


    docker build -t api-stub-image .
    

    작성한 이미지로부터 컨테이너의 작성·기동


    docker run --name api-stub -d -p 8080:80 api-stub-image
    

    이제 스텁이 완성되었습니다.

    동작 확인



    아래와 같이 각 API로 작성한 스텁 파일이 반환되면 성공합니다.
    ※1행과 2행은, Chrome 확장의 JSON Viewer가 붙이고 있는 메타 정보라고 생각하므로 무시해 주세요.



    이상입니다.

    좋은 웹페이지 즐겨찾기