API 설계 중에 openapi cli 사용: 첫 번째 섹션
openapi-cli
을 사용하면 생활이 더욱 수월해집니다.예제 API
Let’s imagine you’ve been asked to create an API for Stargate Network성문 네트워크는 특수 주소를 통해 식별할 수 있는 공간점으로 구성되어 있다.주소(예를 들어 전화번호)로 전화를 걸면 문과 주소 문 사이에 벌레구멍이 생긴다.문은 물리적 대상이기 때문에 폐기되거나 다른 주소로 이동할 수 있다.
우선 리소스:
은하계 내외 주소
OpenAPI 설명 문서를 저장할 장소: YAML 기반 다중 파일git repo를 만듭니다.preliminary analysis에 대한 더 많은 정보를 읽을 수 있습니다.
why’s in the Redocly docs . 이 강좌의 모든 단계에서 as
Commit <commit_hash>.
을 제출하는 링크를 보실 수 있습니다재구매의 예는 바로 GitHub에 있습니다.
Repository structure We’re gonna use 은 초기 구조를 생성한 다음에 그것을 약간 조정한다.API 구조를 생성할 디렉토리에서create-openapi-repo
을 실행합니다.기억해야 할 점은 이 도구가git 저장소를 초기화하여 제출하려고 시도할 것입니다. npx create-openapi-repo
.Commit e5b40a5
생성된 파일을 살펴보겠습니다.
docs
디렉토리에는 참조 문서가 포함된 HTML 템플릿이 있습니다.현재 사용자 정의 템플릿이 필요하지 않기 때문에 삭제하고 있습니다..gitignore
은 최종 OpenAPI 설명 문서를 생성하는 데 사용되는 node_modules
과 dist
디렉토리를 무시하도록 설정합니다..redocly.yaml
은 openapi-cli
의 구성 파일입니다.docs
디렉터리를 삭제했기 때문에 referenceDocs.htmlTemplate
옵션을 삭제해야 합니다.LICENSE
잊지 마세요.package.json
은 가장 일반적인 조작을 설정했다.README.md
.그것은 사용 가능한 조작을 설명하고 예시적인 공헌 지침을 제공했다.실제 프로젝트에서는 모든 안내서를 파일에 넣기를 원하지 않을 수도 있습니다.openapi
목록.이것이 바로 당신의 API 정의가 있는 곳입니다.거의 모든 하위 디렉터리에 README.md
이 있습니다. 이 특정 파일을 만드는 이유를 설명하고 다른 대체 방안을 보여 줍니다.복사해서 붙이기 싫으니까 계속 탐색해;)주: 이런 천박한 디자인에도 이런 정의는 가장 선진적인 것이 아니다.의식적으로 그것의 일부 문제를 첨가하여 예시를 간소화하였으며, 기타 문제는 이후의 문장에서 복원될 것이다.
나는 심지어 얼마나 많은 세부 사항이 소홀히 되었는지 말하는 것도 아니다.
이
PreviewIn the package.json
file there is already an action for previewing the docs: openapi preview-docs
. To execute it, run in the terminal npm run start
.
알 수도 있고 모를 수도 있으며 Redoc의 모양새를 사용자 정의할 수도 있습니다.이는
referenceDocs
(Insomnia Designer) 중 .redocly.yaml
절을 통해 완성됐다.일부 옵션은 고급 버전에만 적용됩니다.옵션은 주제에 영향을 주는 옵션(색상, 글꼴)과 특정 기능을 비활성화하거나 활성화하는 옵션으로 나눌 수 있습니다.예를 들어,
requiredPropsFirst: true
은 다른 속성 앞에 필요한 속성을 표시합니다.docs
만나요.
c873f15 제출 시
Linting From time to time you should lint withopenapi lint
( ). npm run test
을 실행하겠습니다.➜ npm run test
> [email protected] test /home/aviskase/Projects/openapi-cli-examples
> openapi lint
validating /home/aviskase/Projects/openapi-cli-examples/openapi/openapi.yaml...
[1] openapi/openapi.yaml:1:1 at #/
Servers must be present.
1 | openapi: 3.0.3
2 | info:
… | < 30 more lines >
33 | $ref: components/securitySchemes/api_key.yaml
34 |
Error was generated by the no-empty-servers rule.
/home/aviskase/Projects/openapi-cli-examples/openapi/openapi.yaml: validated in 27ms
❌ Validation failed with 1 error.
run with `--generate-ignore-file` to add all problems to ignore file.
아이구!우리가 잘못했어!등등, docs 규칙 불평 우리는 반드시 no-empty-servers
을 정의해야 한다.그러나 servers
이기 때문에 우리의 설명 문서는 유효합니다.이 잘못은 어디에서 왔습니까?.redocly.yaml
이 생성될 경우 lint
섹션이 포함됩니다.lint:
extends:
- recommended
rules:
no-unused-components: warning
no-empty-servers
은 확장된 추천 규칙 집합에서 기원한다.너무 엄격하면 minimal
으로 바꿀 수 있습니다.더 많은 오류를 얻기 위해 all
으로 변경하십시오.나는 추천한 규칙을 보류하고 필요하지 않은 규칙을 명확하게 사용하지 않는 것을 좋아한다.OpenAPI specification doesn’t state this as a required field
no-empty-servers: off
섹션 Per docs에 rules
을 설치해야 합니다.또는 심각도를 warning
으로 변경할 수 있습니다.추가 내장 규칙 commit ee2e3ff에 대한 자세한 내용을 볼 수 있습니다.다음 글에서 사용자 정의 규칙을 추가하는 방법을 보여 드리겠습니다.
파일에서
Bundling Most of the tools require single-file OpenAPI doc. That’s where bundling comes in. Thepackage.json
is preconfigured with the script to run openapi bundle -o dist
which will save a generated file to the dist
directory. Usually it’s enough, but in some cases you may want to run with --derefenreced
flag to produce a file with internally inlined definitions ( ).➜ npm run build
> [email protected] build /home/aviskase/Projects/openapi-cli-examples
> openapi bundle -o dist
bundling /home/aviskase/Projects/openapi-cli-examples/openapi/openapi.yaml...
📦 Created a bundle for /home/aviskase/Projects/openapi-cli-examples/openapi/openapi.yaml at dist.yaml 28ms.
방금 무슨 일이 있었어요?우리가 얻은 것은 ./dist/<filename>.yaml
이 아니라 ./dist.yaml
이다.왜?이것은 버그나 특성의 일종이다.만약 당신이 docs을 선택한다면, 이것은 예상한 행동처럼 보이지만, 여전히 사람을 곤혹스럽게 한다.간단히 말해, API 정의가 하나만 있으면
-o
에 파일 경로가 필요한 것 같습니다.API 정의가 여러 개인 경우(자세한 내용은 다음 두 번째 섹션에 설명됨) 이 옵션은 디렉토리를 가리킬 수 있습니다.우리의 예시에서 우리는 API 정의를 가지고 있기 때문에 복원하려면 스크립트를
-o dist/openapi
또는 -o dist/openapi.yaml
으로 변경해야 한다.기본적으로 --ext
이 yaml
과 같으면 이 두 가지 방법의 효과는 같다.JSON 형식의 파일을 생성하려면 -o dist/openapi --ext json
또는 -o dist/openapi.json
을 사용하십시오.이 두 가지 형식이 필요하면 명령을 각각 실행해야 합니다. check the code을 참고하십시오.a4e1e23을 제출할 때
Generating reference doc One of the features that 하지만 내가 필요로 하는 모든 시간은 정적 Redoc html 파일을 생성하는 것이다.네, 더 좋은 해결 방안과 절차에 투자하고 싶을 때, 비교적 작은 규모에서, 개발진이 아닌 사람이 최신이나 원형 API를 보고 싶을 때 간단한 HTML 파일을 보내는 것은 가능합니다.우선
openapi-cli
을 통해 redoc-cli
을 설치해야 합니다.그런 다음 npm i redoc-cli
에 새 스크립트를 추가하여 package.json
디렉토리에 HTML 파일을 생성합니다."docs": "redoc-cli bundle dist/openapi.yaml -o dist/redoc.html"
dist
을 실행하고 생성된 파일을 열면 모든 사용자 정의 옵션이 사라진 것을 알 수 있습니다.보십시오. npm run docs
은 redoc-cli
프로필을 지원하지 않습니다.이 문제를 해결하려면 .redocly.yaml
doesn’t have을 추가하십시오. prepareOptions.js
에서 referenceDocs
을 읽고 .redocly.yaml
에 저장합니다. 그런 다음 준비 스크립트를 실행하려면 .redoc.json
스크립트를 수정하고 docs
을 사용하십시오."docs": "node plugins/prepareOptions.js && redoc-cli bundle dist/openapi.yaml -o dist/redoc.html --options .redoc.json"
.redoc.json
만나요.ad6dacc를 제출할 때
IMHOPersonally, I prefer different names for scripts:
-
preview
instead ofstart
-
lint
instead oftest
-
bundle
instead ofbuild
-
build
fornpm run lint && npm run bundle && npm run docs
Then, all I do is jump between npm run preview
and npm run build
.
오늘은 여기까지.at commit 51c078e에서는 각 저장소에 대한 여러 정의를 관리하는 방법을 보여 드리겠습니다.
Reference
이 문제에 관하여(API 설계 중에 openapi cli 사용: 첫 번째 섹션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aviskase/using-openapi-cli-during-api-design-part-one-3n63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)