Echolot
모의 서버

경로와 가짜 데이터

JSON, XML, 텍스트 응답, 요청마다 달라지는 가짜 데이터, 응답을 고르는 규칙, 경로에서 만드는 요청으로 모의 서버의 경로를 직접 만듭니다.

경로는 메서드와 경로 주소, 그리고 그곳에서 모의 서버가 응답하는 내용입니다. 아직 명세가 없을 때, 개발하거나 테스트할 엔드포인트가 몇 개 필요할 때, 명세와 다르게 응답하는 경로가 필요할 때 경로를 직접 만드세요. 본문은 전송되는 그대로 JSON, XML, 텍스트로 작성하며, 요청마다 새로 만들어지는 가짜 데이터를 넣을 수 있습니다.

직접 만든 경로는 모의 서버의 JavaScript 경로 다음, 그리고 명세를 제공하는 경우 명세의 작업 앞에서 응답합니다. 요청에 대한 응답이 정해지는 방식을 참고하세요.

경로 만들기

모의 서버 페이지에서 새로운 모의 서버로 모의 서버를 만들거나(가짜 사용자 다섯 명을 반환하는 GET /users 경로가 처음에 들어 있습니다) 기존 모의 서버를 엽니다. 경로 카드에 경로가 나열됩니다.

  • 체크 상자는 경로를 삭제하지 않고 끕니다. 꺼진 경로는 아무것도 응답하지 않습니다.
  • 경로를 클릭하면 목록 아래에서 편집할 수 있습니다.
  • 경로 추가는 선택한 경로 다음에 새 경로를 추가합니다.
  • 경로를 오른쪽 클릭하면 복제, 요청 생성, 주소 복사(모의 서버가 실행 중일 때), 위로 이동, 아래로 이동, 경로 삭제가 나타납니다.

모든 변경은 즉시 저장되고, 실행 중인 모의 서버도 즉시 새 내용으로 응답합니다. 편집 › 실행 취소로 경로 삭제를 포함한 모든 변경을 되돌릴 수 있습니다. 켜져 있는 두 경로의 메서드와 경로가 같으면 카드가 경고합니다. 첫 번째 경로만 응답합니다.

GET /users/{id} 경로의 편집기: 메서드, 경로, 요약, 응답 200 OK(기본값)와 404 Not found, 그리고 OK 응답의 콘텐츠 타입, {{$randomUUID}} 값의 X-Request-Id 헤더, request.params.id와 가짜 값이 들어 있는 JSON 본문이 보입니다

메서드, 경로, 요약

  • 경로: 메서드(GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, 모든 메서드를 뜻하는 ANY)와 경로 주소. HEAD 요청은 본문 없이 GET 경로로 갑니다.
  • 경로 매개변수는 경로의 구간마다 하나씩 {id} 또는 :id로 씁니다. 예: /users/{id}, /files/{name}.json. :id는 {id}로 저장됩니다. 고정 구간이 있는 경로는 매개변수가 있는 경로보다 우선하므로 /users/me가 /users/{id}보다 먼저 응답합니다.
  • 요약은 경로가 무엇을 위한 것인지 설명합니다. 경로에서 만든 요청은 이 요약을 이름으로 사용합니다.

응답

경로에는 응답이 하나 이상 있습니다. 응답 아래의 칩으로 응답을 전환하고, +로 추가합니다. 각 응답에는 다음이 있습니다.

필드설명
이름요청과 규칙이 응답을 가리키는 이름. 예: OK, Not found. 이름은 경로 안에서 고유해야 합니다.
상태상태 코드(100~999).
Content-Type전송할 Content-Type. 예: application/json, application/xml. 옆의 메뉴에 자주 쓰는 타입이 있습니다. 비우면 보내지 않습니다. 본문의 값을 어떻게 이스케이프할지도 이 값으로 정해집니다.
헤더함께 보낼 헤더. 본문처럼 값에 가짜 데이터와 요청의 일부를 넣을 수 있습니다.
규칙기본 응답 대신 이 응답이 응답하는 조건. 응답 고르기를 참고하세요.
본문전송할 내용. JSON, XML, HTML에는 줄 번호와 색상이 표시됩니다.

체크 표시가 있는 응답이 경로의 기본값이며, 다른 응답에서 기본값으로 지정을 누르면 바뀝니다. 휴지통 버튼은 응답을 삭제합니다.

응답 고르기

경로로 온 요청은 다음 순서로 응답을 받습니다.

  1. 요청이 지정한 응답: Prefer: example=Not found 또는 Prefer: code=404 헤더, 또는 Postman의 x-mock-response-name과 x-mock-response-code 헤더.
  2. 규칙이 모두 성립하는 첫 번째 응답.
  3. 경로의 기본값: 기본값으로 지정으로 기본값으로 만든 응답이며, 규칙과 관계없이 응답합니다. 기본값을 고르지 않은 경로에서는 규칙이 성립하지 않은 첫 번째 응답이 규칙이 없는 첫 번째 응답에 자리를 내주므로, 맨 위에 둔 “발송된 주문에 대한 409”가 다른 모든 주문에 응답하지는 않습니다.

규칙은 요청의 한 부분을 봅니다.

규칙이름예
경로 매개변수경로의 매개변수id가 0
쿼리 매개변수쿼리 매개변수page가 *
헤더대소문자와 관계없는 헤더X-Role이 admin
본문 필드JSON 본문 안의 키 경로. 목록 항목은 숫자로 쓰고, 본문 전체는 비워 둡니다user.plan이 pro, items.0.sku가 TNT-MH-2P

값은 그 부분이 가져야 하는 텍스트입니다. *는 값이 있기만 하면 어떤 값이든 된다는 뜻이고, 빈 값은 그 부분이 없어야 한다는 뜻입니다. 규칙이 여러 개인 응답은 모두 성립할 때만 응답합니다. 이름이 없는 규칙은 이름을 입력할 때까지 건너뜁니다.

예를 들어 GET /users/{id} 경로는 기본으로 사용자와 함께 200을 응답하고, 경로 매개변수 id가 0이라는 규칙을 가진 404 응답을 둘 수 있습니다.

curl -i http://127.0.0.1:4010/users/42    # 200, the user
curl -i http://127.0.0.1:4010/users/0     # 404
GET /users/{id}의 404 Not found 응답과 기본값으로 지정 버튼, 그리고 경로 매개변수 id가 0이라는 규칙

가짜 데이터가 있는 본문

본문이나 헤더 값에서 {{ }} 안에 있는 것은 요청이 올 때 채워지므로, 요청마다 새 데이터를 받을 수 있습니다. 본문의 나머지는 작성한 그대로 전송됩니다.

{
  "id": "{{request.params.id}}",
  "name": "{{$randomFullName}}",
  "email": "{{$randomEmail}}",
  "company": "{{$randomCompanyName}}",
  "joined": "{{$randomDatePast}}"
}

가짜 값

{{$randomFirstName}}, {{$randomEmail}}, {{$randomCity}}, {{$randomPrice}}, {{$randomUUID}}와 그 밖의 약 120개: 이름과 직업, 인터넷, 주소, 전화번호, 회사, 금융, 제품, 날짜, 단어, lorem ipsum, 파일, 이미지, 데이터베이스. 이름은 Postman의 동적 변수와 같으므로 Postman용으로 작성한 템플릿이 여기서도 동작합니다. 인수를 받는 것도 있습니다. {{$randomInt(1, 100)}}, {{$randomPrice(5, 50)}}, {{$randomLoremWords(5)}}, {{$randomElement(active, paused, closed)}}. 모든 값은 동적 값에 나와 있습니다.

본문 위의 값 삽입은 커서 위치에 가짜 값을 넣습니다. 가짜 데이터에 그룹별로 있습니다.

같은 값을 요청에서도 사용할 수 있으며, 요청에서는 보낼 때마다 새로 만들어집니다. 동적 값을 참고하세요.

요청의 일부

토큰설명
{{request.params.id}}경로 매개변수.
{{request.query.page}}쿼리 매개변수. 없으면 빈 값.
{{request.headers.X-Trace}}대소문자와 관계없는 헤더.
{{request.body.user.name}}JSON 본문의 필드를 키 경로로 지정(목록 항목은 items.0.sku). 텍스트는 그대로, 숫자, true, false, 객체, 목록은 JSON으로.
{{request.body}}텍스트로서의 본문 전체.
{{request.method}}POST 같은 메서드.
{{request.path}}/users/42 같은 경로.

값 삽입 › 요청에 경로 자신의 경로 매개변수와 함께 나와 있습니다.

목록

{{#repeat 10}} … {{/repeat}}는 그 사이의 내용을 그 횟수만큼 씁니다. {{#repeat 2 8}}은 두 수 사이의 횟수만큼 쓰며, 요청마다 새로 정해집니다. JSON 본문에서는 항목 사이에 쉼표가 자동으로 들어갑니다. 안쪽에서 {{@number}}는 1부터 시작하는 항목 번호, {{@index}}는 0부터 시작하는 번호입니다. 반복 안에 반복을 넣을 수 있습니다.

[
  {{#repeat 5}}
  {
    "id": {{@number}},
    "name": "{{$randomProductName}}",
    "price": {{$randomPrice}}
  }
  {{/repeat}}
]

한 줄에 {{#repeat}} 또는 {{/repeat}}만 있으면 빈 줄이 남지 않습니다.

이스케이프

값은 들어가는 위치에 맞게 이스케이프되므로, 따옴표가 들어 있는 이름이 JSON을 깨뜨리지 않습니다.

  • JSON 본문(json이 들어 있는 Content-Type)에서는 문자열 안의 값이 JSON으로 이스케이프됩니다. {{$randomInt}}나 {{@number}}처럼 따옴표 밖에 있는 값은 그대로 들어갑니다.
  • XML과 HTML(xml 또는 html이 들어 있는 Content-Type)에서는 &, <, >, 따옴표가 어디서든 이스케이프됩니다.
  • 중괄호 세 개는 이스케이프하지 않습니다. {{{request.body}}}는 요청의 JSON 본문을 JSON으로 그대로 넣습니다.
{ "received": {{{request.body}}}, "at": "{{$isoTimestamp}}" }

Echolot이 모르는 토큰은 작성한 그대로 남습니다. {{$randomInt(9, 1)}}처럼 만들 수 없는 값도 작성한 그대로 남으며, 로그가 이유를 알려 줍니다. 본문은 16 MB, 반복은 10,000개 항목에서 멈춥니다.

본문은 그 외에는 아무것도 읽지 않습니다. 작업 공간의 변수, 환경, 비밀 값, 파일을 읽지 않으므로, 네트워크에서 응답하는 모의 서버가 이들을 노출할 수 없습니다.

고정 데이터: 생성

{{ }} 안의 값은 요청마다 새 데이터를 줍니다. 매번 같은 데이터로 응답하려면 본문 위의 생성…을 클릭하세요.

  • 목록 만들기: 본문은 항목 하나를 켜면 본문이 그 항목 수만큼의 JSON 목록이 되고, 각 항목은 본문으로 만들어집니다.
  • 끄면 본문의 값이 한 번 채워집니다.

생성은 본문을 결과로 바꿉니다. 편집 › 실행 취소로 템플릿을 되돌릴 수 있습니다. 터미널에서는 echolot fake가 같은 일을 합니다.

경로에서 요청 만들기

경로 카드의 요청 생성은 모의 서버의 이름으로 된 폴더를 만들고, 켜져 있는 모든 경로에 대한 요청을 넣습니다. 경로의 컨텍스트 메뉴에서 요청 생성을 선택하면 그 경로의 요청 하나를 만듭니다. Echolot이 첫 번째 요청을 엽니다.

  • 폴더에는 모의 서버의 주소로 설정된 변수 baseUrl이 있고, 모든 URL은 이 변수로 시작합니다. 예: {{baseUrl}}/users/{{id}}. 나중에 baseUrl을 실제 API로 바꾸면 같은 요청이 그쪽으로 갑니다.
  • 경로 매개변수는 요청 변수가 되며, 기본 응답의 경로 규칙이 값을 지정하지 않으면 1입니다.
  • 요청의 이름은 경로의 요약입니다.
  • 경로의 요청 본문이 함께 들어갑니다.

경로의 요청 본문

경로 맨 아래의 요청 본문에는 경로에서 만든 요청에 사용할 본문과 Content-Type이 들어 있습니다. 예를 들어 POST /users가 받는 JSON입니다. 모의 서버가 응답하는 내용은 바꾸지 않으며, 본문 필드에 대한 규칙은 요청이 실제로 보내는 내용을 읽습니다.

에이전트와 함께

모의 서버 도구 모음이 켜져 있으면 에이전트와 어시스턴트도 경로를 만들 수 있습니다. 필요한 것을 요청하세요.

  • “주문 목록, 조회, 생성 경로가 있는 모의 서버를 가짜 데이터로 만들고 시작해 줘.”
  • “id가 0이면 GET /users/{id}가 404를 반환하게 해 줘.”
  • “모의 서버의 경로에 대한 요청을 만들어 줘.”

에이전트는 create_mock(이름과 경로를 지정하며 명세는 필요 없음), save_mock_route, delete_mock_route, generate_fake_data, list_fake_values, create_requests_from_mock을 사용합니다. save_mock_route는 기록의 응답을 경로로 바꿀 수도 있으며, 복사되는 내용은 에이전트가 읽는 다른 모든 것과 같이 가려집니다. 에이전트가 경로를 삭제할 때는 먼저 확인을 요청합니다. 에이전트를 참고하세요.

작업 공간에서

경로는 모의 서버의 파일 mocks/<name>.toml에 [[routes]]와 그 [[routes.responses]]로 저장됩니다. diff에서 읽기 쉽고 Git으로 공유됩니다. 작업 공간 파일을 참고하세요.

이 페이지에서