potiuk commented on issue #29893:
URL: https://github.com/apache/airflow/issues/29893#issuecomment-1875024049

   I assigned you - but part of the task is to propose how to do it. Generally 
speaking, generic retrieval/update of partial information is somethingh that 
GraphQL attempted to do as the "next gen" API, attempting to "fix" what REST 
got broken.
   
   https://graphql.org/
   
   However, my personal opinion (and of many people) is that GraphQL is quite a 
bit TOO generic. It is relatively popular and used in quite a few places - but 
mostly in "corporate" world and big installation because - unlike REST it is 
not intuitive and learning curve is, welll, steep IMHO. I never gotten to be 
thrilled with the idea of learning more about GraphQL and getting the hang of 
it personally. Also it tried to address all-but-kitchen-sink aspects of the API 
(including rate limiting, introspection, etc. . in most of the implementations 
are very difficult to get performance right and there are plenty of other 
issues with it.
   
   You can read for example here 
https://blog.logrocket.com/graphql-vs-rest-api-why-you-shouldnt-use-graphql/
   
   IMHO (but this is my opinion) - we need something much simpler and 
straightforward here and rather then defining and following a "standard", we 
should possibly tap into other people doing similar things - because our API is 
described with OpenAPI definition and our REST points documentation and swagger 
UI and everything we have in the API is generated. That's especially important 
as our Clients (notably https://github.com/apache/airflow-client-python) are 
generated using OpenAPI client generator that translates the OpenAPI 
specification into Python classes that you can import and use directly. This 
goes for other languages as well.
   
   This is a bit tricky, because the generator produces objects returned, so if 
API returns partial objects, then it cannot return ACTUAL OBJECTS. It can 
return dictionaries for example, or some Proxy Objects that actually only 
contain part of data and the rest of the data **might** be retrieved lazily.
   
   So finding a way how to do it so that it is:
   
   a) simple
   b) builds on top of REST not changing it to GraphQL
   c) nicely integrates with OpenaAPI definition, Swagger
   d) integrates with Open API generators to allow such partial retrieval
   
   So this task is really:
   
   * to research what is out there
   * to see if it is mature enough to use or maybe we should develop something 
on our own - either inspired by things out there or design it from the scratch
   * implement a POC
   * run a project to apply it to all end-points, starting from the most 
important ones
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to