Skip to main content

Graphql

Question : Why GraphQL?
Answer : There are various reason why we benefit from using the graphQL
  1. Clean API between backends and frontends
  2. Less communication overhead 
  3. No more time spent writing API documentation
  4. No more time spent trying to figure out an API
  5. Great tooling for your API
  6. Supports multiple clients and multiple server interactions.
Question : Describe GraphQL in nutshell?
Answer : GraphQL is Language and Runtime both,
Language gives us the tool to specify the queries, mutation, subscription, fragment.
Runtime describe the validation, Type Systems, execution and introspection.

Question : Describe the overall interaction cycle of the graphQL?
Answer : These are the basic steps carried during the interaction between client and the server
  • Read inputs from Interface,
  • Parse into the Abstract Syntax Tree, 
  • invokes its resolver function, then it either gets the scalar data or else invokes another internal resolver function.
  • Data returned from resolver function are then merge together and then return back to the client, which usually in form of JSON.

Question : What makes graphQL so popular?
Answer : Being a data agent is one aspect, addition to that, it is a single poc which takes care of finding the required resource or data from the external system, one way to see the graphQL is it is an ORM for the web services, to achieve the same,
It has strong type system.
It is hierarchical graph based system to get the data based on the schema defined.
it only provide the data as needed, avoid over fetching or accidently providing the data which client has not subscribed to.

Question : Give an example of the variable in graphQL
Answer : To use a variable, we need to add the same variable name prefixed with the $ symbol,

query TestQuery($chId:ID!) {
  channel(id:$chId) {
    channelId
    channelName
    program
    broadCastDate
  }
}

$chId:ID! : This means it is mandatory, and need to be passed, and the varaible should be declared in the variables section with the name chId.

(id:$chId) : channel query needs a parameter called id, now either we can hard code like channel (id : 22) or else we can also use the variable which is injected at the TestQuery level, i.e. $chId. So the $chId is replaced with the variable value when we execute the query.

variables
{
  "chId": 22
}

Question : Give the example of the alises?
Answer : many time we need to transform the response, so that it can be easily applied to the ui component as sometime ui component expect input in certain key value pair format, so to solve those kind of problem alias can be real handy.

query TestQuery($chId:ID!){
   channel(id:$chId) {
    channelId
    channelName: name
    description
    broadCastDate
  }
}

Now the original response from the graphQL service is name but our ui component wants it to be in the form of the channelName, so instead of converting it back to the channelName after the response is received, we are aliasing it in front, e.g. what if the response returns an array, then we need to loop it through entire array to modify the data. So the alising is very handy on these kind of situation.

Question : What is fragments and how can we use them?
Answer : The Fragments are kind of subschema of schema or types defined as the document Type in the graphQL schema.

This is very useful if we want to redfine the partial fields as single type, so that we can use it without even specifying all the fields which we want from the response, so that can make this schema reusable and also leads to concise code.

e.g.
query TestQuery($chId:ID!){
   channel(id:$chId) {
    ... ChannelInfo
  }
}

fragment ChannelInfo on ChannelType {
   channelId
    channelName: name
    description
    createdDate
    lastUpdateTimeStamp
    channelStatus
    recordStatus
}

So here we declared the ChannelInfo and the data or fields will be inherited from the ChannelType which is a return type for the channel query. Hence the statement "fragment ChannelInfo on ChannelTyp" says that we are creating a fragment with the name "ChannelInfo" "on" "ChannelType"



Comments

Popular posts from this blog

NodeJS

Question : Why You should use Node JS? Answer :  Following are the major factor influencing the use of the NodeJS Popularity : The popularity can be important factor, as it has more user base and hence solution  of any common problem faced by developer can found easily online, without any professional help. JavaScript at all levels of the stack :  A common language for frontend and backend offers several potential benefits: The same programming staff can work on both ends of the wire Code can be migrated between server and client more easily Common data formats (JSON) exist between server and client Common software tools exist for server and client Common testing or quality reporting tools for server and client When writing web applications, view templates can be used on both sides Leveraging Google's investment in V8 Engine. Leaner, asynchronous, event-driven model Microservice architecture Question : example of node JS code? Answer :  const fs = require('fs'); const uti

Kubernetes

What is Kubernetes? Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem.  The name Kubernetes originates from Greek, meaning helmsman or pilot. Google open-sourced the Kubernetes project in 2014. Kubernetes combines over 15 years of Google’s experience running production workloads at scale with best-of-breed ideas and practices from the community. Why you need Kubernetes and what it can do? Containers are a good way to bundle and run your applications. In a production environment, you need to manage the containers that run the applications and ensure that there is no downtime. For example, if a container goes down, another container needs to start. Wouldn’t it be easier if this behavior was handled by a system? That’s how Kubernetes comes to the rescue! Kubernetes provides you with a framework to run distributed systems resi

Spring Interview Question - Version 3.5

Spring Overview Question :   What is Spring? Answer : Spring is an open source development framework for Enterprise Java. The core features of the Spring Framework can be used in developing any Java application, but there are extensions for building web applications on top of the Java EE platform. Spring framework targets to make Java EE development easier to use and promote good programming practice by enabling a POJO based programming model.   Question : What are benefits of Spring Framework? Answer :   Lightweight : Spring is lightweight when it comes to size and transparency. The basic version of spring framework is around 2MB.   Inversion of control (IOC) : Loose coupling is achieved in Spring, with the Inversion of Control technique. The objects give their dependencies instead of creating or looking for dependent objects.   Aspect oriented (AOP) : Spring supports Aspect oriented programming and separates application business logic from system services.   C