===== API ======
The API design tooling.
JSON API, OpenAPI and JSON Schema Working in Harmony
https://blog.apisyouwonthate.com/json-api-openapi-and-json-schema-working-in-harmony-ad4175f4ff84
==== Communication options =====
{{https://s3.eu-central-1.amazonaws.com/alf-digital-wiki-pics/sharex/rNvZHNhbje.png}}
==== IDEA ====
=== Graphql API ===
Get the data by describing it https://graphql.org/
=== HATEOAS API ===
Use links and self describtive API resources, to navigate trhough teh API.
==== Standard ====
=== HAL - Hypermedia api langauge ===
HAL really is just a document format for a hypermedia API, like HTML is for hypertext. It doesn’t tell you how to express your domain model, and doesn’t really tell you how to use HAL to submit changes.
=== JSON:API ===
Whereas JSON API is almost like an “ORM over HTTP”, HAL does a lot less for you though, so it’s not really an apples-to-apples type of comparison.
HAL really is just a document format for a hypermedia API, like HTML is for hypertext. It doesn’t tell you how to express your domain model, and doesn’t really tell you how to use HAL to submit changes.
==== Schema====
=== JSON Schema ===
?
http://json-schema.org/
=== Swagger / OpenAPI 3.0 ===
Creating the API describtion in SWAGGER, using the API might be the first step to create an API.
It is for sure a good medium to communicate the APIs.
https://editor.swagger.io/
== Swagger Tools for SWAGGER / Open API3.0 (OAS3) ==
The Swagger tools are now separated from the API Specification.
The API Specification is in Open API 3.0.
The tools still support Open API 3.0
|Swagger UI|Visualization of the SWAGGER API|
|Swagger Editor|Creation of the SWAGGER API|
==== Implementation ====
=== Spring HATEOAS ===
The https://spring.io/projects/spring-hateoas
is the API which is capable to generate a clean HATEOAS API
our of some Data Access Objects (DAOs) / Resources.
The requirement is - the ability to map the backend to DAOs.
By exporting the full API
http://localhost:8095/v2/api-docs?group=full-api
and importing it via the Swagger Editor in a browser:
http://editor.swagger.io
Select Paste JSON… from the File menu.
It can be imported to SWAGGER form
=== Spring Katharsis.io ===
The lib, helping to implement an API, which is conform to Json:API.
* https://dzone.com/articles/create-a-json-api-rest-service-with-spring-boot-an
* https://dzone.com/articles/json-api-using-katharsis-amp-spring-boot
* There are also libs, which generate a JSON:API conform API from Resources and Data Access Objects. E.g. https://dzone.com/articles/json-api-using-katharsis-amp-spring-boot
* There is a detailed description of the API structure, separated from the implementation: https://jsonapi.org/ It gives me the possibility to design equally structured APIs, even when using different technologies. (Can mix up e.g. serverless implementations with e.g. Spring)
* There is a JSON Schema, helping to validate our APIs automagically E.g. https://jsonapi-validator.herokuapp.com/
==== Operation ====
=== SAM Framework ===
The AWS SAM framework is capable of deploying the serverless infrastructure on AWS
=== AWS API Gateway ===
On the AWS API Gateway the APIs can be collected, managed, vizualized.
==Import:==
One can Import an API in Swagger
* as a SWAGGER file in OpenAPI v2.0 or OpenAPI v3.0
* as a Cloudformation / SAM Framework describtion