krsyoung
Joined 10 years ago
Joined 10 years ago
For DB-centric projects I've used things like StrongLoop and DreamFactory which makes turning a DB into a REST API very simply. Key is that the DB is just being turned into REST ... no much logic in the middle.
Foxx looks cool, have not tried it but claims to be similar to Sinatra.
For exposing, it really depends if you are exposing internally or externally. Worth checking out something like Kong to act as your API gateway and leave some of the complexity out of the backend services when / if possible.
Vendor extensions are flexible / powerful but how to consolidate such that services consuming API specifications can depend on their existence and understand their semantics?
Unless you are talking about native code APIs ...
Curious if folks perform their initial search on any of the sites above or if Google is the one that lands you there?
Also curious how Hitch would look if it could more easily detect changes via API providers providing a more formal specification (i.e. versioned Open API Specifications, Blueprint, RAML etc.. that could be diff'd). Guessing it is "challenging" today to either rely on API owners to make updates or to deal with more complicated web scraping.
I think the major benefits of client libraries is the ability for a developer to stay within their programming language / business domain and not stray into the fun of HTTP and JSON.
Curious how much burden this makes for providers though and what people have done to streamline the testing of the various client libraries with different versions of the service.
Having the API specification cover more of the business/service aspects is very interesting (could you possibly define cost per call per endpoint or per payload size for instance).
I think realityking nailed it in terms of the API community needing to define compelling use cases. The catch 22 here is that it is hard for people to innovate around API specifications when they are so hard to get! Per the SDKs ... what if there was a NPM.org or rubygems equivalent of high quality SDKs that get automatically generated whenever I push a new API specification? That seems like it could be cool.
And your example of automated composition is fantastic! Curious if you are able to share how much work it is for you to get access to the specifications in order to make this possible? If we invented a common practice to publish something like api.company.com/spec.yaml could you have spent a lot more time on making cool integrations vs mining specs?
Second, I like your enthusiasm for specs from code ... the problem (opportunity?) today is that the specifications intertwine human readable descriptions / summaries with the actual endpoint / payload information.
I would hate for my devops pipeline to kick-off because somebody fixed a typo in some human focused in-line documentation. I personally don't think it belongs in the code but absolutely agree with the spirit of your comment (if you keep them separate it is more work and they will get out of sync!).
The best luck I have is working within the specification (i.e. Swagger) and avoiding doing things that don't model well. This seems backwards, but for most of the development I've been involved with to date it has served the projects well.
Interested if others have had luck embedding API specs into code.
It is currently very unclear how much load is being caused by the "convenience" of data-based queries. Having the ability to articulate and limit these expensive operations via policy would be incredibly helpful in not only shaping internal behaviour but also in exposing services to broader audiences.
Curious what others in the community have done to hack something similar in place?