Docker와api blueprint+aglio+drakov를 사용하여 API 개발을 가볍게 합니다
12100 단어 DockeragliodrakovAPIBlueprint
개요
웹 API를 개발하려면 appi blueprint와aglio+drakov를 사용하여 문서를 간단하게 만들고 모크 서버를 시작할 수 있는 환경을 구축하십시오.
api blueprint
https://apiblueprint.org/
이쪽 기사를 참고하게 해 주세요.감사합니다!
API Blueprint, drakov, dredd에 API 문서를 작성하면서 mock 서버를 구축하여 추가 테스트를 수행합니다.
https://arata.hatenadiary.com/entry/2018/03/22/204723
이번에 구축된 환경은 GiitHub에 업로드 중이니 참고해주세요.
https://github.com/kai-kou/api-blueprint-use-aglio-darkov
환경 구조
Docker 환경을 준비합니다.
> mkdir 任意のディレクトリ
> cd 任意のディレクトリ
> touch Dockerfile
> touch docker-compose.yml
node.js를 사용할 수 있도록 그림을 지정합니다.aglio와drakov를 설치합니다.
Dockerfile
FROM node:latest
WORKDIR /projects
RUN npm install -g aglio --unsafe-perm
RUN npm install -g drakov
command
에서 aglio와drakov를 각각 시작하는 명령을 지정했습니다.docker-compose.yml
version: '3'
services:
aglio:
build: .
ports:
- "3000:3000"
volumes:
- "./md:/projects"
tty: true
command: aglio --theme-variables slate -i index.md -s -h 0.0.0.0
drakov:
build: .
ports:
- "3001:3001"
volumes:
- "./md:/projects"
tty: true
command: drakov -f "**/*.md" --public --watch --p 3001
문서 준비
Docker를 시작하기 전에 API 사양을 기술한 파일을 미리 준비합니다.
> mkdir md
> touch md/index.md
> touch md/sample.md
md/index.MD는 Aglio에서 여러 MD 파일을 처리하는 데 사용됩니다.aglio에서
**/*.md
를 지정하면 됩니다, Docker-composie.yml로 지정하면 제대로 시작할 수 없습니다.md/index.md
<!-- include(sample.md) -->
md/sample.md# GET /message
+ Response 200 (text/plain)
Hello World!
Docker 컨테이너 시작
준비가 되었으니 Docker 컨테이너를 시작합니다.
> docker-compose up -d
시동이 걸렸는지 확인해 보겠습니다.> docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------
api-blueprint-use-aglio-darkov_aglio_1 aglio --theme-variables sl ... Up 0.0.0.0:3000->3000/tcp
api-blueprint-use-aglio-darkov_drakov_1 drakov -f **/*.md --public ... Up 0.0.0.0:3001->3001/tcp
네.그럼, 제가 따로 방문해 보겠습니다.
aglio
> open http://localhost:3000/
drakov
> curl -v http://localhost:3001/message
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 3001 (#0)
> GET /message HTTP/1.1
> Host: localhost:3001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Drakov API Server
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
< Content-Type: text/plain; charset=utf-8
< Content-Length: 13
< ETag: W/"d-oLZZOWcLwsAQ9NXWoLPk5FkPuSs"
< Date: Mon, 03 Sep 2018 02:19:27 GMT
< Connection: keep-alive
<
Hello World!
* Connection #0 to host localhost left intact
네.각자 시동을 걸고 있다.일지도 확인해봐야지.
aglio
> docker-compose logs aglio
aglio_1 | Server started on http://0.0.0.0:3000/
aglio_1 | Rendering index.md
aglio_1 | Socket connected
aglio_1 | Refresh web page in browser
aglio_1 | Socket connected
drakov> docker-compose logs drakov
drakov_1 | DRAKOV STOPPED
drakov_1 | DRAKOV STARTED
drakov_1 | [LOG] Setup Route: GET /message
drakov_1 | Drakov 1.0.4 Listening on port 3001
drakov_1 | PUBLIC MODE running publicly
drakov_1 | [LOG] GET /message
drakov_1 | [MATCHING] by url pattern: /message MATCHED
drakov_1 | [DRAKOV] GET /message
drakov_1 | [LOG] GET /message
drakov_1 | [MATCHING] by url pattern: /message MATCHED
drakov_1 | [DRAKOV] GET /message
md/sample.MD의 내용을 변경해 보세요.md/sample.md
# GET /message
+ Response 200 (text/plain)
Hello World!!!!!
변경 후 로그를 확인합니다.aglio
> docker-compose logs aglio
aglio_1 | Updated sample.md
aglio_1 | Rendering index.md
aglio_1 | Refresh web page in browser
aglio_1 | Updated sample.md
aglio_1 | Rendering index.md
aglio_1 | Refresh web page in browser
drakov> docker-compose logs drakov
drakov_1 | [CHANGE] sample.md Restarting 6
drakov_1 | DRAKOV STOPPED
drakov_1 | DRAKOV STARTED
drakov_1 | [LOG] Setup Route: GET /message
drakov_1 | Drakov 1.0.4 Listening on port 3001
drakov_1 | PUBLIC MODE running publicly
변경 테스트 중이지?aglio
> open http://localhost:3000/
drakov
> curl -v http://localhost:3001/message
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 3001 (#0)
> GET /message HTTP/1.1
> Host: localhost:3001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Drakov API Server
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
< Content-Type: text/plain; charset=utf-8
< Content-Length: 17
< ETag: W/"11-dSdq9EnT5dkGNunArS5pSGaVctI"
< Date: Mon, 03 Sep 2018 02:23:53 GMT
< Connection: keep-alive
<
Hello World!!!!!
* Connection #0 to host localhost left intact
각각 변경을 반영했다.md 파일을 추가하려고 시도합니다.
> touch md/sanple2.md
> vi md/sanple2.md
> vi md/index.md
md/sanple2.md# GET /message2
+ Response 200 (text/plain)
Hello World!!!
md/index.md<!-- include(sample.md) -->
<!-- include(sample2.md) -->
추가 반영이 있는지 확인해 보겠습니다.aglio
> open http://localhost:3000
drakov
> curl -v http://localhost:3001/message2
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 3001 (#0)
> GET /message2 HTTP/1.1
> Host: localhost:3001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Drakov API Server
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
< Content-Type: text/plain; charset=utf-8
< Content-Length: 16
< ETag: W/"10-DyKYcjpVzlBcpDK0SJCKLaPPxvE"
< Date: Mon, 03 Sep 2018 02:29:31 GMT
< Connection: keep-alive
<
Hello World!!!!
* Connection #0 to host localhost left intact
네.느낌이 좋다.파일을 업데이트하거나 추가할 때 프로세스가 떨어질 때가 있습니다.
이제 다음 명령을 사용하여 재부팅할 수 있습니다.
> docker-compose start
Starting aglio ... done
Starting drakov ... done
그럼 좋은 appi blueprint 개발 생활 되세요^^
Reference
이 문제에 관하여(Docker와api blueprint+aglio+drakov를 사용하여 API 개발을 가볍게 합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kai_kou/items/feca8974f3967a285ff4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)