sgcOpenAPI Deja de escribir a mano clientes REST. Entra la especificación, sale Pascal.

Apunta sgcOpenAPI a un documento OpenAPI 3.x. El analizador lo lee, el generador emite un SDK nativo en Object Pascal y el componente de servidor OpenAPI vuelve a publicar tus propios endpoints como una especificación viva.

  • OpenAPI 3.0 y 3.1
  • JSON y YAML
  • Swagger 2.0 convertido automáticamente
  • De Delphi 7 a RAD Studio 13
  • C++ Builder
  • 1.195+SDK de nube preconstruidos, generados a partir de las especificaciones oficiales
  • 280+Servicios de Amazon AWS
  • 650+Servicios de Microsoft Azure
  • 250+Servicios de Google Cloud
  • 15+SDK de Microsoft Graph
Míralo en marcha

Mira sgcOpenAPI en dos minutos.

Entra una especificación, sale Pascal, y hay un servidor en cualquiera de los dos extremos. Con narración y subtítulos. No se descarga nada hasta que pulsas reproducir.

Guía rápida de sgcOpenAPI

Convierte una especificación en código Delphi y convierte código Delphi en un servidor en marcha.

  1. Genera un clienteIndica a la línea de comandos una especificación de entrada y un fichero Pascal de salida. La entrada puede ser un fichero o una URL, en JSON o YAML.
  2. Qué se obtienePascal corriente: cada operación se convierte en un método y cada esquema en una clase. Añade -s para obtener en su lugar un esqueleto de servidor.
  3. Servidor Spec-FirstCrea TsgcWSAPIServer_OpenAPI, llama a LoadFromFile, gestiona OnRequest, asígnalo a tu servidor y pásalo a Active.
  4. Servidor Code-FirstAnota una clase Delphi con atributos y la especificación se genera a partir de la clase al arrancar.
  5. ValidaciónActiva ValidateRequest y ValidateRequestBody y una petición que no coincide con la especificación nunca llega a tu código.
Biblioteca de SDK preconstruidos

Cuatro nubes, ya en Pascal.

No tienes que generar nada para empezar. Las cuatro plataformas de nube más grandes se incluyen en sgcOpenAPI como SDK Pascal listos para usar, generados a partir de las especificaciones oficiales y mantenidos al día.

Amazon AWS, más de 280 servicios

SDK de servicios REST que cubren S3, EC2, Lambda, DynamoDB, SQS, SNS, CloudFormation y más. Añade la unidad al proyecto y llama al servicio con clases tipadas de petición y respuesta.

Ver los SDK de AWS →

Microsoft Azure, más de 650 servicios

El conjunto más grande de la biblioteca. Máquinas virtuales de Azure, Blob Storage, Functions, Cosmos DB, Key Vault y el resto del plano de control de Azure, cada uno como un cliente Pascal generado.

Ver los SDK de Azure →

Google Cloud, más de 250 servicios

Compute Engine, Cloud Storage, BigQuery, Pub/Sub, Cloud Functions y más.

Ver los SDK de Google →

Microsoft Graph, más de 15 SDK

Office 365, Microsoft Teams, OneDrive, Outlook y Active Directory, a través de la API Graph.

Ver los SDK de Microsoft →

Cualquier otra especificación

Si la API publica un documento OpenAPI o Swagger, el generador lo convierte en el mismo tipo de unidad Pascal tipada. No hay lista de APIs permitidas.

Características del generador →

Todos los niveles, todo incluido

Single, Team y Site incluyen el analizador, el generador de código, el componente de servidor OpenAPI y toda la biblioteca de SDK preconstruidos. No se vende nada por separado.

Todos los SDK preconstruidos →

Guías prácticas, desde una especificación pública hasta un cliente Delphi que compila

El flujo de trabajo

Entra la especificación, sale código que compila.

Cinco pasos, todos dentro del IDE. Sin Node.js, sin generador de código en Java, sin motor de plantillas que aprender.

# one input, one output, and you have a unit
> sgcOpenAPI.exe -i "api.github.com.json" -o "github.pas" -a 2

File successfully created github.pas

# -a 2 wires up token auth   -u sets the base url
# -x drops operations        -p prunes the classes they used
# -s emits a server stub instead of a client
# exit 0 ok, 5 bad input, 6 bad output, 7 not convertible
uses
  github;  // the unit you just generated

procedure TForm1.btnReposClick(Sender: TObject);
var
  oResponse: TsgcOpenAPI_reposlistforauthenticateduser_Response;
  oRepo: TsgcOpenAPI_repository_Class;
begin
  GetOpenAPIClient.Authentication.Token.BearerToken := 'ghp_...';

  oResponse := GetOpenAPIClient.reposlistforauthenticateduser(
    'private', 'owner', 'all', 'full_name', '', 100, 1);
  try
    if oResponse.IsSuccessful then
      for oRepo in oResponse.Successful.Items do
        Memo1.Lines.Add(oRepo.Full_name)
    else
      Memo1.Lines.Add(IntToStr(oResponse.ResponseCode) + ' ' +
        oResponse.ResponseError);
  finally
    oResponse.Free;
  end;
end;
uses
  sgcHTTP_Server, sgcHTTP_OpenAPI_Server, sgcWebSocket_Server_API_OpenAPI;

procedure TForm1.btnStartClick(Sender: TObject);
begin
  FServer := TsgcHTTPServer.Create(Self);
  FServer.Port := 8080;

  FOpenAPI := TsgcWSAPIServer_OpenAPI.Create(Self);
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSpec := True;
  FOpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
  FOpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
  FOpenAPI.LoadFromFile('petstore.json');
  FOpenAPI.OnRequest := OnOpenAPIRequest;
  FOpenAPI.Server := FServer;

  FServer.Active := True;
end;

// one event, dispatched by operation id
procedure TForm1.OnOpenAPIRequest(Sender: TObject;
  const aOperationId: string;
  const aContext: TsgcOpenAPIServerContext;
  var Handled: Boolean);
begin
  Handled := True;
  if aOperationId = 'getPetById' then
    aContext.RespondJSON(200,
      FPets.Values[aContext.PathParamAsString('petId')])
  else
    Handled := False;
end;
  1. Apúntalo a una especificaciónApunta -i a un fichero local o a una URL, en JSON o YAML. Ambos se leen en local, y un documento Swagger 2.0 también se convierte a OpenAPI 3 en local.
  2. AnalizarTsgcOpenAPI lee el documento en Paths, Components, Security, Servers, Tags y Info, y deja constancia en Warnings de todo lo que no ha podido respetar. Los $ref externos se incorporan de antemano con TsgcOpenAPI_Bundle.
  3. GenerarTsgcOpenAPI_Parser_Client_Pascal desciende de ese lector y escribe una unidad Pascal: un método por operación, una clase de respuesta por método y una clase por cada esquema, con las descripciones del documento como comentarios.
  4. CompilarAñade la unidad generada al proyecto y ponla en una cláusula uses. En la ruta de biblioteca solo debe estar la carpeta Source de sgcOpenAPI, de Delphi 7 a RAD Studio 13. Las respuestas tipadas requieren XE7 o posterior.
  5. LlamarLlama a GetOpenAPIClient, establece las credenciales en Authentication, y llama a la operación. La URL base ya viene incorporada desde la entrada servers del documento.

El generador desciende del lector, así que también puedes crear TsgcOpenAPI tú mismo, recorrer el modelo analizado y construir tus propias herramientas sobre él. El componente analizador →

El lado del servidor

Sirve la especificación, no te limites a consumirla.

TsgcWSAPIServer_OpenAPI se acopla a un TsgcHTTPServer, enruta las peticiones entrantes según el documento cargado, las valida antes de que se ejecute tu manejador y sirve el documento y una Swagger UI desde el mismo puerto.

Spec-First: una unidad Delphi carga petstore.json en TsgcWSAPIServer_OpenAPI y la tabla de rutas se construye a partir de la especificación.

Lo que te aporta

GET /pets/{petId} llega a tu manejador OnRequest con aOperationId igual a getPetById. GET /openapi.json devuelve el documento que cargaste y GET /docs abre Swagger UI, ambos activados con Endpoint.ServeSpec y Endpoint.ServeSwaggerUI. Endpoint.BasePath mueve el par bajo un prefijo.

Code-First: una clase Delphi anotada con los atributos sgcServiceContract, sgcRoute y sgcHttpGet, y el documento OpenAPI generado a partir de ella al arrancar.

Spec-First o Code-First

Carga un contrato JSON con LoadFromFile y despacha según el id de operación, o anota una clase Pascal con sgcServiceContract, sgcHttpGet, sgcRoute y sgcFromBody y deja que TsgcOpenAPICodeFirstScanner construya el documento. Code-First requiere Delphi XE7 o posterior. Ambas demos se incluyen en Demos\30.Server\.

Validación: las peticiones que no coinciden con la especificación se responden con 400 Bad Request antes de que se ejecute el manejador OnRequest.

Validación antes de que se ejecute tu manejador

Validation.ValidateRequest, ValidateRequired y ValidateRequestBody comprueban la petición entrante contra el documento antes de que se ejecute tu manejador. OnValidationError te entrega el id de operación y la lista de fallos, y un indicador Continue que decide si se rechaza la petición.

El contexto de la petición: parámetros de ruta, de consulta y de cuerpo ya analizados, y el código de respuesta, el tipo de contenido y el texto establecidos en el manejador.

Autenticación conectada desde la especificación

Las entradas securityScheme del documento activan OnValidateAPIKey, OnValidateBasic y OnValidateBearer. Tú escribes la búsqueda de credenciales, el componente analiza la petición y responde con el estado correcto cuando la búsqueda dice que no.

  • Clave de API
  • HTTP Basic
  • Bearer
  • JWT
  • OAuth2
  • OpenID Connect
  • Swagger UI

El servidor se ejecuta sobre el mismo servidor HTTP de sgcWebSockets que aloja tus endpoints WebSocket y tus ficheros estáticos. Un puerto, un certificado TLS, un flujo de registro. El componente de servidor OpenAPI →

Licencias

Un producto, tres niveles.

Un único producto para Delphi y C++ Builder: un analizador de OpenAPI 3.x, un generador de SDK Pascal nativo, un componente de servidor OpenAPI y más de 1.195 SDK de nube preconstruidos. Código fuente completo y distribución libre de royalties. Elige según el tamaño del equipo.

Single

Un desarrollador. Analizador, generador, componente de servidor y todos los SDK preconstruidos.

€399 / 1 desarrollador

Team

Dos desarrolladores. El mismo producto completo que Single.

€649 / 2 desarrolladores

Site

Desarrolladores ilimitados. El mismo producto completo que Single.

€1,099 / desarrolladores ilimitados

sgcOpenAPI se licencia por separado. El analizador, el generador de código, el componente de servidor y los más de 1.195 SDK preconstruidos se incluyen en todos los niveles.

Compara niveles y precios
Testimonios

Qué dicen los desarrolladores

La confianza de desarrolladores de Delphi, C++ Builder, Lazarus y .NET en todo el mundo.

Vuestra librería sgcWebSockets es muy útil y fácil de configurar. ¡Seguid así!
Simone Moretti Desarrollador Delphi
sgcWebSockets es increíble y vuestro soporte es el mejor.
Christian Meyer Fundador y CTO
Muchas gracias por vuestra ayuda y soporte, me encantan vuestros componentes.
Mark Steinfeld CTO

Genera hoy tu primer SDK Pascal.

Analizador, generador de código, componente de servidor OpenAPI y los más de 1.195 SDK de nube preconstruidos, con una sola licencia. Código fuente completo, distribución libre de royalties, de Delphi 7 a RAD Studio 13.

Más de eSeGeCe

Otros productos de eSeGeCe

sgcOpenAPI es una de las bibliotecas de componentes de eSeGeCe para Delphi, C++ Builder y .NET. Comparten convenciones, incluyen el código fuente completo y se distribuyen libres de royalties.

Paquetes, complementos y más

Lo último del blog

Ver todas las publicaciones →

Estás viendo la vista sgcOpenAPI de eSeGeCe.

Mostrar otro enfoque →
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso