Playground가 대시보드에 적용되었습니다. 3개의 endpoint, 1개의 cookie jar, 파싱된 모든 header를 지원합니다. Single, Proxy, 또는 Browser를 선택하고, request를 입력한 뒤, Send를 누르세요. response가 status, headers, body, 파싱된 cookies와 함께 동일한 화면에 표시됩니다. 결과가 만족스러우면 작동하는 curl을 코드에 복사해 붙여넣으세요.
이것은 별도의 페이지나 다른 URL 뒤에 숨겨진 sandbox가 아닙니다. 실제 키를 사용하여 라이브 API를 대상으로 실행됩니다. Playground에서 보는 것이 프로덕션 코드가 실제로 받게 될 결과입니다.
How It Works
대시보드에 로그인하여 3개의 endpoint 중 하나를 선택하면, 해당 endpoint가 실제로 허용하는 필드만 표시되도록 폼이 자동으로 재구성됩니다.
- Single은
url,method,headers,unblocker,proxy,tryJsonData,followRedirects및 timeout 그룹을 가집니다. - Proxy는
request블록으로 감싸진 동일한 세트에 proxy 선택 필터(country, city, ASN, anonymity, freshness)가 추가로 제공됩니다. - Browser는
url,cookies,headers및 wait 조건을 가집니다.
Send를 누르면 대시보드가 사용자의 계정으로 호출을 인증하고 api.foura.ai의 /api/{endpoint}로 POST 요청을 보냅니다. 실제 API key는 페이지를 거쳐 전송되지 않습니다. Playground는 브라우저에 key를 노출하지 않고 요금이 부과되는 request를 실행할 수 있는 대시보드 내 유일한 공간입니다.
Playground가 기본적인 Single request에 대해 생성하는 curl 재현 코드는 다음과 같습니다.
curl -X POST 'https://api.foura.ai/api/single' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY' \
--data-raw '{
"url": "https://example.com/products",
"method": "GET",
"unblocker": true,
"tryJsonData": true
}'
이를 터미널이나 빌드 스크립트에 붙여넣으면 Send 버튼과 정확히 동일하게 작동합니다. 페이로드를 커스텀 봉투로 감싸거나 필드 이름을 변경하지 않습니다. Playground는 API가 수락하는 스펙 그대로 전송합니다.
What You See Back
response 패널에는 업스트림 status, 총 소요 시간, 그리고 (Proxy 호출의 경우) request를 처리한 proxy id가 표시됩니다. Body, Headers, Cookies는 각각 전용 탭에 표시됩니다.
Body. 자동 감지된 JSON은 접고 펼칠 수 있는 뷰어로 렌더링됩니다. HTML 페이로드는 프리뷰 창으로 전환되어 대상 사이트가 반환한 내용을 시각적으로 확인할 수 있습니다. 텍스트는 일반 고정폭(monospace) 뷰로 표시됩니다. Body와 Raw 탭에는 이전/다음 이동이 가능한 검색창이 제공됩니다.
Headers. name: value당 한 줄씩 표시되는 파싱된 뷰 또는 전체 멀티홉 response 체인을 보여주는 Raw 뷰를 제공합니다. 모든 리다이렉트는 자체 header 세트를 남기므로, 클릭 한 번으로 최종 목적지까지 302 리다이렉트를 추적할 수 있습니다.
Cookies. cookie jar는 response의 모든 Set-Cookie 라인을 파싱하고, 각 cookie가 호스트 전용(host-only)인지 도메인 범위(domain-wide)인지 추적하며(RFC 6265 §5.3), 호스트별 접이식 카드 또는 raw 리스트의 두 가지 뷰를 제공합니다. cookie jar를 활성화하면 다음 request 시 일치하는 cookies를 자동으로 가져옵니다. Single 및 Proxy의 경우 이는 발신 request의 Cookie header를 의미합니다. Browser의 경우 request 객체에 첨부된 cookie 배열을 의미합니다.
Preset은 전체 request 설정을 이름 및 설명과 함께 저장하므로, 매번 다시 구성할 필요 없이 "test login on staging"과 같은 설정으로 바로 돌아갈 수 있습니다. History는 status, 콘텐츠 유형, 총 소요 시간, 사용된 proxy 정보를 포함하여 최근 20회의 실행 기록을 유지합니다.
Impact
Playground가 실제로 변화시키는 것은 바로 이터레이션 루프입니다.
이전에는 간단한 스크립트(Node, Python 또는 셸)를 작성하고, key를 연결하고, API를 호출하고, body를 출력하고, header를 하나 수정한 뒤 다시 실행해야 했습니다. "이 사이트가 무엇을 반환하는지 궁금하다"에서 답을 얻기까지 아마 10분은 걸렸을 것입니다.
Playground에서는 이 루프가 15초에 가깝게 단축됩니다. endpoint를 클릭하고, URL을 붙여넣고, Send를 누르고, cookies를 확인한 뒤, unblocker를 off에서 on으로 변경하고 다시 Send를 누릅니다. 에디터를 열기도 전에 대상 사이트에서 어떤 버전의 request가 작동하는지 이미 파악하게 됩니다.
실제 코드를 대체하기 위해 Playground를 출시한 것이 아닙니다. "이 사이트에서 작업이 가능한가"에서 "네, 여기 작동하는 curl이 있습니다"에 이르는 과정에서 더 이상 사이드 프로젝트를 만들 필요가 없도록 하기 위해 출시했습니다.
For Power Users
화면 전면에 바로 드러나지 않는 몇 가지 유용한 기능은 다음과 같습니다.
Preset은 전체 페이로드를 포함합니다. 여기에는 timeout 그룹, 검증 규칙, 리다이렉트 제한 및 모든 커스텀 headers가 포함됩니다. Preset을 저장하면 단순히 URL만 저장하는 것이 아니라 테스트를 마친 request의 스냅샷을 저장하게 됩니다. 여러 endpoints에 걸쳐 안정적인 스모크 테스트 세트를 유지할 때 유용합니다.
cookie jar는 세션별로 유지됩니다. 이는 브라우저에 저장됩니다. 캡처된 cookies를 서버 측에 영구 저장하지 않습니다. 깨끗한 상태가 필요하다면 탭을 새로고침(Hard-reload)하세요.
Raw 탭과 폼은 동기화 상태를 유지합니다. 폼 필드는 Raw 탭이 보여주는 것과 동일한 JSON을 렌더링합니다. Raw 탭에 페이로드를 붙여넣으면 폼이 자동으로 채워집니다. 따라서 동료가 채팅창에 작동하는 request를 공유하면, 이를 Raw 탭에 붙여넣어 폼을 자동으로 채울 수 있습니다.
Browser cookies는 header 형태가 아닌 객체 형태입니다. Browser endpoint로 cookies를 수동으로 전송하는 경우, 각 항목은 {name, value, domain?, path?, httpOnly?, secure?, sameSite?} 형식을 취합니다. Playground는 jar가 켜져 있을 때 이를 올바르게 구성합니다. 직접 작성하는 경우 스키마 일치 여부가 중요합니다.
결과(Outcomes)는 활동 피드에 표시됩니다. Playground에서 request를 실행하면 사용자의 key에 대해 다른 호출과 동일하게 계산됩니다. 활동 로그에서 올바른 결과 레이블(success, client_error, application_error, rate_limit, service_error)과 함께 확인할 수 있습니다. 간헐적으로 실패하는 프로덕션 호출을 재현할 때 유용합니다. Playground에서 다시 실행하고, 활동 로그에서 이를 찾아 팀원들과 링크를 공유하세요.
What's Next
Playground는 대시보드가 단순히 이전에 수행한 작업을 보여주는 것을 넘어 더 많은 역할을 수행하도록 하기 위한 첫 걸음입니다. request 로그에서 관찰되는 패턴이 다음에 출시될 기능을 결정합니다.
현재 사용 중이신데 문서와 일치하지 않는 필드, 리다이렉트 시 유지되지 않는 cookie, 잘못 렌더링되는 response 등 무언가 어색한 점이 있다면, 그것이 저희가 가장 먼저 확인하는 피드백입니다. 대시보드는 requests를 보고, 저희는 트렌드를 봅니다.