

# Establezca la propiedad `basePath` de OpenAPI
<a name="api-gateway-import-api-basePath"></a>

En [OpenAPI 2.0](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md), puede utilizar la propiedad `basePath` para proporcionar una o varias partes de la ruta que preceden a cada una de las rutas definidas en la propiedad `paths`. Como API Gateway tiene varias maneras de expresar la ruta de un recurso, la característica Importar API ofrece las siguientes opciones para interpretar la propiedad `basePath` durante una importación: "ignore", "prepend" y "split".

En [https://swagger.io/docs/specification/api-host-and-base-path/](https://swagger.io/docs/specification/api-host-and-base-path/), `basePath` ya no es una propiedad de nivel superior. En su lugar, API Gateway utiliza una [variable de servidor](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#serverVariableObject) como una convención. La característica Import API proporciona las mismas opciones para interpretar la ruta base durante la importación. La ruta base se identifica como se indica a continuación:
+ Si la API no contiene ninguna variable `basePath`, la característica Import API comprueba la cadena `server.url` para ver si contiene una ruta más allá `"/"`. Si es así, esa ruta se utiliza como la base de la ruta.
+ Si la API contiene una única variable `basePath`, la característica Import API la utiliza como la ruta base, incluso si no se hace referencia en el `server.url`.
+ Si la API contiene varias variables `basePath`, la característica Import API utiliza únicamente la primera como la ruta base.

## Ignore
<a name="api-gateway-import-api-basePath-ignore"></a>

Si el archivo de OpenAPI tiene un valor `basePath` de `/a/b/c` y la propiedad `paths` contiene `/e` y `/f`, la siguiente solicitud `POST` o `PUT`: 

```
POST /restapis?mode=import&basepath=ignore
```



```
PUT /restapis/api_id?basepath=ignore
```

 produce los siguientes recursos en la API: 
+ `/`
+ `/e`
+ `/f`

 El efecto consiste en tratar `basePath` como si no estuviera presente, y todos los recursos de la API declarados se sirven en relación con el host. Esto puede utilizarse, por ejemplo, cuando disponga de un nombre de dominio personalizado con una asignación de API que no incluya un valor *Base Path* ni *Stage* que haga referencia a la etapa de producción. 

**nota**  
 API Gateway crea automáticamente un recurso raíz, aunque no se haya declarado explícitamente en el archivo de definición. 

 Cuando no se especifica, `basePath` toma `ignore` como valor predeterminado. 

## Anexar
<a name="api-gateway-import-api-basePath-prepend"></a>

 Si el archivo de OpenAPI tiene un valor `basePath` de `/a/b/c` y la propiedad `paths` contiene `/e` y `/f`, la siguiente solicitud `POST` o `PUT`: 

```
POST /restapis?mode=import&basepath=prepend
```



```
PUT /restapis/api_id?basepath=prepend
```

 produce los siguientes recursos en la API: 
+ `/`
+ `/a`
+ `/a/b`
+ `/a/b/c`
+ `/a/b/c/e`
+ `/a/b/c/f`

 El efecto consiste en tratar `basePath` como si especificara recursos adicionales (sin métodos) y añadiera estos recursos al conjunto de recursos declarados. Esto puede utilizarse, por ejemplo, cuando diferentes equipos sean responsables de diferentes partes de una API y `basePath` pueda hacer referencia a la ubicación de ruta de la parte de la API de cada equipo. 

**nota**  
 API Gateway crea automáticamente los recursos intermedios, aunque no se hayan declarado explícitamente en la definición. 

## Split
<a name="api-gateway-import-api-basePath-split"></a>

 Si el archivo de OpenAPI tiene un valor `basePath` de `/a/b/c` y la propiedad `paths` contiene `/e` y `/f`, la siguiente solicitud `POST` o `PUT`: 

```
POST /restapis?mode=import&basepath=split
```



```
PUT /restapis/api_id?basepath=split
```

 produce los siguientes recursos en la API: 
+ `/`
+ `/b`
+ `/b/c`
+ `/b/c/e`
+ `/b/c/f`

 El efecto consiste en tratar la parte de la ruta superior, `/a`, como el principio de la ruta de cada recurso y crear recursos adicionales (sin método) dentro de la propia API. Esto podría usarse, por ejemplo, cuando `a` es un nombre de etapa que desee exponer como parte de la API. 