Prisma

Trabajar con API es estupendo, pero a veces no hace falta utilizar la API real para llevar a cabo el trabajo de desarrollo. Una herramienta que puede resultarte útil incluir en tu flujo de trabajo de desarrollo es Prisma de Semáforo. Prism es un servidor simulado que imita nuestras API en vivo. Puede ejecutarlo localmente para probar sus llamadas a la API durante el desarrollo, sin incurrir en costes de uso.

Prism entiende el OpenAPI que publicamos para cada una de nuestras API, por lo que puedes usar este enfoque para trabajar con cualquiera de las API de Vonage.

Instalar Prism

Prism es una herramienta de Node.js, por lo que tendrás que tener Node.js instalado en tu equipo. Completo documentación e instrucciones de instalación Hay varias disponibles, pero la versión resumida es una npm install comando:

npm install -g @stoplight/prism-cli

Compruebe que el comando está instalado y funciona ejecutando prism --version desde un terminal.

Consigue la especificación OpenAPI

Para consultar la especificación OpenAPI de cualquiera de nuestras API, accede a dicha API desde la Página de inicio de la documentación. Seleccione la referencia API en el menú de la izquierda y utilice el botón de descarga YAML para descargar la especificación API.

An example of the Download OpenAPI Specification section

Una vez que tenga el .yml una vez que hayas elegido el archivo que quieras, ya estás listo para iniciar Prism.

Iniciar un servidor simulado con Prism

Desde el terminal, inicie prism con un comando como este:

prism mock [api-spec.yml]

Por ejemplo, en el caso de la Number Insight API, mi comando y su resultado tienen este aspecto:

$ prism mock number-insight.yml
[12:13:06] › [CLI] …  awaiting  Starting Prism…
[12:13:06] › [CLI] ℹ  info      GET        http://127.0.0.1:4010/basic/json?number=1%295-2%209%2B2&country=UV
[12:13:06] › [CLI] ℹ  info      GET        http://127.0.0.1:4010/standard/xml?number=67-64%298427&country=OU&cnam=false
[12:13:06] › [CLI] ℹ  info      GET        http://127.0.0.1:4010/advanced/async/json?callback=sunt%20deserunt%20dolore%20id&number=%2B1208&country=CM&cnam=false&ip=accusamus
[12:13:06] › [CLI] ℹ  info      GET        http://127.0.0.1:4010/advanced/xml?number=-47&country=MU&cnam=false&ip=non
[12:13:06] › [CLI] ▶  start     Prism is listening on http://127.0.0.1:4010

La última línea de la salida muestra dónde se está ejecutando Prism; para mí es localmente en el puerto 4010.

Solicitudes API a Prism

Con la URL mostrada en la salida de inicio de Prism como URL base, utilice su cliente HTTP favorito para probar la API de ejemplo. En el ejemplo anterior se utilizó la API Number Insight, por lo que podría realizar una solicitud curl como esta:

curl "http://localhost:4010/basic/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777"

La respuesta de Prism tiene los mismos campos que la API en producción y algunos valores de ejemplo, lo que la convierte en un sustituto ideal de la «API real» a la hora de realizar pruebas.

Para una forma aún más fácil de trabajar con Prism y hacer peticiones a la API, prueba a importar a Postman la misma especificación OpenAPI que le diste a Prism y utiliza la colección de peticiones ya preparadas. Cambiando la directiva {{baseUrl}} variable, puedes usar rápidamente Postman y Prism para explorar la forma de cualquier API de Vonage sin cargos.

Utilice Prism con su aplicación

Todos nuestros SDK permiten modificar la URL base a la que se dirigen las solicitudes de la API (tal y como se detalla en el README de cada una de las bibliotecas) para poder utilizar otros puntos finales para las pruebas.

Prisma Uso avanzado

Una vez que te hayas familiarizado con Prism, aquí tienes algunos consejos para dar un paso más allá.

Solicitar una respuesta específica

Nuestras API pueden devolver respuestas de error en determinadas situaciones, y puede resultar complicado reproducir esas situaciones de error en la plataforma en producción. El uso de Prism ofrece la oportunidad de probar las aplicaciones con todas las respuestas posibles.

Algunas de nuestras especificaciones de API incluyen descripciones detalladas de las respuestas de error, y puedes utilizar el nombre de la respuesta para pedirle a Prism que la devuelva.

Por ejemplo, en la API Verify, encontrará esto en las respuestas de ejemplo de la especificación de la API:

              examples:
                success:
                  summary: Request was started
                  value:
                    request_id: abcdef0123456789abcdef0123456789
                    status: "0"

                throttled:
                  summary: Request limit exceeded
                  value:
                    status: "1"
                    error_text: Throttled

                account-disabled:
                  summary: Account is barred
                  value:
                    status: "8"
                    error_text: The api_key you supplied is for an account that has been barred from submitting messages.

                rejected:
                  summary: Rejected
                  value:
                    status: "15"
                    error_text: The destination number is not in a supported network

Por defecto, Prism devuelve la primera respuesta, lo cual está muy bien, es un buen ejemplo de lo que la API suele devolver.

Sin embargo, comprobar que tu código maneja algunas de estas otras posibles respuestas no sería lo ideal. Aquí es donde Prism puede ser de gran ayuda. Añadiendo un __example a su petición, puede seleccionar cuál de los ejemplos debe devolver Prism. Por ejemplo, para realizar una solicitud curl a la API Verify y que devuelva la respuesta "acelerada", sería así:

curl "http://localhost:4010/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777&brand=Test&__example=throttled"

Utilizando Prism de esta forma puedes comprobar el comportamiento de tu aplicación con todas las respuestas que puede devolver la API.

Mejor manejo de JSON con JQ

Si estás trabajando con JSON en la línea de comandos, como en los ejemplos de curl que se muestran aquí, prueba esta herramienta jq para mejorar tu forma de trabajar con JSON. Es un gran formateador en sí mismo, y puede extraer campos particulares de la respuesta o manejar los datos de otras maneras también.

En su forma más simple, úselo para obtener una salida más agradable del ejemplo curl que usamos cuando probamos Prism por primera vez:

curl "http://localhost:4010/basic/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777" | jq "."