Swagger에서 yaml 데이터를 받은 후 모의 만들기
↓ 이쪽의 사이트를 참고로 했습니다!
개발 효율을 높이십시오! Swagger로 만드는 WEB API 모의
① Swagger Editor의 왼쪽 편집기 화면에 swagger.yml을 올린다.
Swagger Editor는 이쪽으로부터! → Swagger Editor
디폴트로 검은 에디터에 Swagger의 기술이 되어 있으므로, 완성된 Swagger.yml의 내용을 그대로 copipe 해 붙여 넣습니다.
제 경우에는 실안건의 Swagger로 표시를 시도하고 싶었기 때문에,
localhost 용으로 조금 기술을 바꾸고 있습니다.
② 로컬 환경용으로 host 를 "localhost:3001", basePath 를 "/" 로 변경
아래 이미지와 같습니다!
host
를 localhost로 하거나 basePath도 변경 필요했기 때문에 여러가지 변경했습니다.③「Generate Server」에서 서버를 선택하여 내보내기
왼쪽 상단 탐색기에서 Generate Server를 클릭하여 내보내려는 유형을 선택한 다음 로컬로 파일을 삭제합니다.
나는 자바 스크립트를 제외하고 완전히 무지하기 때문에 웃음, "nodejs-server"를 선택했습니다.
"nodejs-server-server"폴더를 열면
./api/swagger.yaml
는 에디터에 복사한 설명과 완전히 같은 것이 들어 있습니다!「service」디렉토리에 있는
AdminService.js
역시 Swagger에 기술한 대로의 데이터나, 모의로 반환해 주는 Example 데이터까지 들어가 있습니다!④ 로컬로 떨어뜨린 Swagger 디렉토리에서 $yarn install & $yarn start
나는 Swagger 호스트에
localhost:3001
를 지정했으므로,http://localhost:3001/docs/
을 열면 Swagger Editor의 오른쪽에 표시된 것처럼 문서를 볼 수 있습니다.
「Curl」내의 기술을 터미널로 두드리면, 제대로 응답되고 있는 것을 확인할 수 있습니다.
`curl -X GET --header 'Accept: application/json' --header 'Authorization: 1' 'http://localhost:3001/admin/client'`
⑤아래와 같은 에러가 나와 버려도 괜찮아! cors 라이브러리를 설치합시다!
모의를 로컬 서버로 작성할 수 있었던 것이고, 막상 비동기 처리의 테스트를 해 보자!
라고 생각해, 아래와 같이 기술해 동작을 시험해 보았습니다.
(시도하고 싶은 응용 프로그램이 React를 사용하기 때문에 axios를 사용하여 API를 호출하고 있습니다.)
아래는 발췌입니다.
import axios from 'axios'
export const handleFetchProjects = Id => async dispatch =>
{
const response = await axios.get(`http://localhost:3001/projects/${Id}`)
dispatch(actions.fetchProjects(response.data, response.status))
}
이것으로 좋고, 라고 생각했는데, 이하와 같은 에러가 나와 당황했습니다. .
Access to XMLHttpRequest at 'http://localhost:3001/admin/*****' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
에러를 해소하는데 참고로 한 사이트가 여기입니다!
참고 사이트
Swagger에서 자동 생성 된 nodejs-server에 CORS를 허용하는 방법
swagger 디렉토리에서
cors
라이브러리를 설치하고 참고 사이트대로 index.js에 cors
의 import와 app.use(cors());
$ npm install cors --save
var cors = require('cors');
app.use(cors());
그리고, 자신의 무지고에, js의 기술도 달랐던 것 같습니다.
header도 건네줄 필요가 있었으므로, 이하와 같이 재작성했습니다.
export const handleFetchProjects = Id => async dispatch =>
{
const response = await axios.get(`http://localhost:3001/projects/${Id}`, {
headers: { Authorization: '1' }
})
dispatch(actions.fetchProjects(response.data, response.status))
}
로컬 환경에서 Swagger-ui에서 조롱 할 수있었습니다!
특히 json 파일로 변환하거나 등의 조작도 필요 없었기 때문에 편리하다고합니다.
⑥응답의 데이터를 조금 개조하고 싶다…!
임시 데이터를 반환하는 것은 훌륭하지만 풀릭 보내면
"삭제한 날에 차이가.
Example 데이터는 1종류의 데이터를 루프 하고 있을 뿐이므로, 2개 이상의 비교를 할 수 없습니다…
그래서,
null
를 직접 만나게 됩니다!해당 부분을 찾는 것은, 페이인 나는 시간이 걸려 버렸습니다만, 이하와 같은 기술을 발견할 것입니다.
var examples = {};
examples['application/json'] = [ {
...
} ]
examples의 object를 예를 들면 100개로 해 보거나, 의뢰대로.
【마치고】
처음으로 swagger 만졌으므로, 앞으로 여러가지 만져 갑니다!
모의 도구는 분명 다른 것일 것입니다 ...!
Reference
이 문제에 관하여(Swagger에서 yaml 데이터를 받은 후 모의 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hitomi_Nagano/items/1c3004f4ede912a9b3de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)