---
title: "Clientes de API y SDK: sin direcciones de ejemplo"
description: "Por qué api.example-petstore.com devuelve 410 Gone, cómo dejar las URL base en la configuración y evitar que direcciones de ejemplo lleguen a producción."
url: https://example-petstore.com/es/guides/api-base-url
language: es
---

# Configurar clientes de API y SDK

Las solicitudes a direcciones como api.example-petstore.com vienen de código que todavía usa una dirección de ejemplo como URL base. Esta guía muestra dónde suele estar esa dirección, cómo trasladarla a la configuración y cómo evitar que vuelva a ocurrir.

## La respuesta que recibes

Toda solicitud con cuerpo, a una ruta de estilo API como `/v2/pet` o que pida JSON, recibe `410 Gone` con una descripción del problema (RFC 9457):

```
HTTP/1.1 410 Gone
Content-Type: application/problem+json; charset=utf-8

{"type":"https://example-petstore.com/#where","title":"Example domain, not a real service",
 "status":410,"detail":"api.example-petstore.com is an example domain used in documentation. …"}
```

Este dominio no es la API de ejemplo Swagger Petstore, que está en [`petstore.swagger.io`](https://example-petstore.com/es/guides/swagger-petstore).

## Dónde está la dirección

- una constante o un valor predeterminado en el código (`BASE_URL = "https://api.example-petstore.com"`);
- un archivo de configuración, un archivo `.env` o una variable de entorno copiados de un ejemplo;
- el campo `host` o `servers` de una descripción de OpenAPI usada para generar un cliente;
- una variable de entorno de Postman o Insomnia, como `{{baseUrl}}`;
- pruebas, datos de prueba y tareas de CI que se ejecutan contra un marcador de posición.

## Configurarla correctamente

Lee la dirección desde la configuración y haz que falle de forma visible cuando falte:

```
# Python: read the address from configuration, not from the code
import os
BASE_URL = os.environ["API_BASE_URL"]

// JavaScript / Node.js
const baseURL = process.env.API_BASE_URL;
```

```
# Python, httpx
client = httpx.Client(base_url=os.environ["API_BASE_URL"])

// Node.js, axios
const api = axios.create({ baseURL: process.env.API_BASE_URL });

# Generated OpenAPI client (Python)
configuration = Configuration(host=os.environ["API_BASE_URL"])
```

En Postman o Insomnia, define `baseUrl` por entorno y selecciona el entorno correcto antes de enviar.

## Evitarlo

Añade una comprobación al inicio o en las pruebas que rechace las direcciones de ejemplo:

```
import os, re
base = os.environ["API_BASE_URL"]
if re.search(r"example-(petstore|commerce-host)\.com", base):
    raise RuntimeError(f"API_BASE_URL still points at an example domain: {base}")
```

En tu propia documentación y tus ejemplos, usa nombres reservados para ese fin, como `api.example.com`. Consulta [dominios de ejemplo](https://example-petstore.com/es/example-domains).

## Claves que se enviaron

Si las solicitudes incluían una clave de API, un token, una contraseña o una cookie de sesión, llegaron al servidor equivocado. Revócalos en el servicio que los emitió y genera otros nuevos. [Credenciales filtradas: qué hacer ahora](https://example-petstore.com/es/guides/leaked-credentials).

Probar sin el servicio real: [Prueba con una Mock API, no con una dirección de ejemplo](https://example-petstore.com/es/guides/mock-api)

## Fuentes

- [RFC 9457: Problem Details for HTTP APIs](https://www.rfc-editor.org/rfc/rfc9457.html) IETF
- [Secrets Management Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html) OWASP
- [Swagger Petstore sample API](https://petstore.swagger.io/) Swagger
