Question : Why GraphQL?
Answer : There are various reason why we benefit from using the graphQL
Answer : There are various reason why we benefit from using the graphQL
- Clean API between backends and frontends
- Less communication overhead
- No more time spent writing API documentation
- No more time spent trying to figure out an API
- Great tooling for your API
- 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.
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"
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
Post a Comment