API (interfaz de programación de aplicaciones) RESTful (transferencia de estado representacional ) Los DL (lenguajes de descripción) son lenguajes formales diseñados para proporcionar una descripción estructurada de una API web RESTful que es útil tanto para un humano como para el procesamiento automático de máquinas. Los lenguajes de descripción de API a veces se denominan lenguajes de descripción de interfaz (IDL). La descripción estructurada podría usarse para generar documentación para programadores humanos.; dicha documentación puede ser más fácil de leer que la documentación de formato libre, ya que toda la documentación generada por la misma herramienta sigue las mismas convenciones de formato. Además, el lenguaje de descripción suele ser lo suficientemente preciso como para permitir la generación automatizada de varios artefactos de software, como bibliotecas, para acceder a la API desde varios lenguajes de programación, lo que elimina la carga de crearlos manualmente a los programadores.
Historia
Existen dos lenguajes de descripción principales anteriores: WSDL2.0 (Lenguaje de descripción de servicios web) y WADL (Lenguaje de descripción de aplicaciones web). Ninguno de los dos se adopta ampliamente en la industria para describir las API RESTful, citando la escasa legibilidad humana de ambos y que WADL en realidad no puede describir completamente una API RESTful. [1]
Alternativas
API impulsadas por hipertexto
Un enfoque alternativo para la creación de API RESTful se conoce con el acrónimo HATEOAS ( Hypermedia as the Engine of Application State ). En este enfoque, el software del cliente no se escribe en una descripción de interfaz estática compartida a través de la documentación. En cambio, el cliente recibe un conjunto de puntos de entrada y la API se descubre dinámicamente a través de la interacción con estos puntos finales. HATEOAS se introdujo en la tesis doctoral de Roy Fielding , Estilos arquitectónicos y diseño de arquitecturas de software basadas en redes . HATEOAS ha sido la visión original de las API RESTful que las distingue de los mecanismos RPC . [2]
Lista de listas de distribución de API RESTful
- Lenguaje de descripción de servicios web (WSDL)
- Lenguaje de descripción de aplicaciones web (WADL)
- Google Cloud Endpoints
- URL: https://cloud.google.com/endpoints/ , https://developers.google.com/discovery
- desarrollador: Google
- Protocolo de datos abiertos (OData)
- Estándar OASIS [3]
- URL: http://www.odata.org/
- desarrollador: Microsoft
- Especificación de OpenAPI
- URL: https://openapis.org/
- desarrollador: Open API Initiative (OAI), originalmente desarrollada como especificación "Swagger" por Wordnik , SmartBear Software
- Lenguaje de descripción de servicio RESTful (RSDL)
- URL: http://www.balisage.net/Proceedings/vol10/html/Robie01/BalisageVol10-Robie01.html
- desarrollador: Michael Pasternak
- Vocabulario de Hydra Core (Hydra)
- URL: http://www.hydra-cg.com/spec/latest/core/
- desarrollador: Hydra W3C Community Group, http://www.hydra-cg.com/
- Lenguaje de modelado de API RESTful (RAML)
- URL: http://raml.org/
- desarrollador: Mulesoft, http://www.mulesoft.com/
- Hipermedia
- Plano de API
- URL: https://apiblueprint.org/
- desarrollador Apiary, https://apiary.io/company
- Generador de API
- URL: https://www.apibuilder.io/
- desarrolladores: HBC, Flow Commerce
- Documentos de E / S
- URL: https://github.com/mashery/iodocs
- desarrollador: Mashery, http://www.mashery.com/
- Apache Avro
- Abogado
- URL: http://barrister.bitmechanic.com/
- desarrollador: James Cooper [4]
- SERIN - Interfaces semánticas tranquilas [5]
- URL: http://www.semanticinterface.org
- desarrolladores: Bruno Muniz, Hermano Lira, José Renato Villela Dantas, Tadeu Nunes, Laura Chaves, Julio Cesar Campos Neto, Pedro Porfírio Muniz Farias
Lista de lenguajes de descripción de datos
Una parte importante de la descripción de la API RESTful es la especificación de las estructuras de datos devueltas. El IDL puede especificar su propio formato o utilizar un formato de descripción de datos existente. Un ejemplo notable que utilizan muchas DL de API RESTful es JSON Schema .
- json: api
- http://jsonapi.org/
- Comenzó como adaptador REST para Ember Data
- Esquema JSON
- utilizado por OpenAPI, Google APIs Discovery, [6] I / O Docs
- Apache Avro
- https://avro.apache.org/
- Lenguaje de descripción de interfaz y lenguaje de descripción de datos
- JSON-RPC 2.0
- utilizado por Barrister
Comparación de las listas de distribución de API RESTful
La comunidad en torno a las listas de distribución de API RESTful está activa y el panorama aún está cambiando. Según una presentación de Akana, los proyectos más activos en esta área son OpenAPI, RAML y API Blueprint. [1]
Patrocinador | Compromiso inicial | Última versión estable | Fecha de lanzamiento estable | Licencia de software [7] | Formato | Fuente abierta | Generación de código (cliente) | Generación de código (servidor) | |
---|---|---|---|---|---|---|---|---|---|
RAML | MuleSoft | Septiembre 2013 | 1.0 | 16 de mayo de 2016 | Apache 2.0 | YAML | sí | sí | sí |
Plano de API | Colmenar | Abril 2013 | MIT | Reducción | sí | No | No | ||
OpenAPI | Iniciativa de API abierta (OAI) | Julio de 2011 | 3,0 | Febrero de 2021 | Apache 2.0 | JSON o YAML | sí | sí | sí |
CANARIO | UNIFOR | 2011 | 2.0 | Diciembre de 2014 | Creative Commons | RDF | sí | No | sí |
Frameworks
Muchos marcos de servidor interactúan con uno o más IDL.
- Marco de API REST de Gugamarket
- IDL: OpenAPI
- URL: https://pliik.github.io/gugamarket/
- desarrollador: https://github.com/pliik
Referencias
- ^ Fielding, Roy. "Las API REST deben estar basadas en hipertexto" . Consultado el 4 de noviembre de 2015 .
- ^ "OASIS Open Data Protocol (OData) TC - OASIS" .
- ^ "Barrister RPC - Acerca de" .
- ^ Lira, Hermano Albuquerque; Dantas, José Renato Villela; Muniz, Bruno de Azevedo; Nunes, Tadeu Matos; Farias, Pedro Porfirio Muniz (1 de enero de 2015). "Un enfoque para apoyar la integridad de los datos para los servicios web mediante interfaces semánticas RESTful" . Actas de la 24ª Conferencia Internacional sobre World Wide Web . Compañero de WWW '15. Nueva York, NY, EE. UU .: ACM: 1485–1490. doi : 10.1145 / 2740908.2743042 . ISBN 9781450334730. S2CID 13241736 .
- ^ https://developers.google.com/discovery/v1/reference/apis
- ^ Las licencias aquí son un resumen y no se consideran declaraciones completas de las licencias. Algunos paquetes pueden usar bibliotecas con diferentes licencias.
enlaces externos
- Investigación de las herramientas para desarrolladores de API