Skip to content

Instantly share code, notes, and snippets.

@adrianhall
Created June 1, 2022 16:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adrianhall/74b7c95289a8726919923ed792a65a08 to your computer and use it in GitHub Desktop.
Save adrianhall/74b7c95289a8726919923ed792a65a08 to your computer and use it in GitHub Desktop.
An example Azure API Management policy for Synthetic GraphQL.
<policies>
<inbound>
<base />
<validate-graphql-request max-depth="3" />
</inbound>
<backend>
<set-graphql-resolver parent-type="Query" field="getAllTodoItems">
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://todoitems.azurewebsites.net/tables/todoitem</set-url>
</http-request>
</http-data-source>
</set-graphql-resolver>
<set-graphql-resolver parent-type="Query" field="getTodoItem">
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>@{
var body = context.Request.Body.As<JObject>(true);
return "https://todoitems.azurewebsites.net/tables/todoitem/" + body["variables"]["id"].ToString();
}</set-url>
</http-request>
</http-data-source>
</set-graphql-resolver>
<set-graphql-resolver parent-type="Mutation" field="deleteTodoItem">
<http-data-source>
<http-request>
<set-method>DELETE</set-method>
<set-url>@{
var body = context.Request.Body.As<JObject>(true);
return "https://todoitems.azurewebsites.net/tables/todoitem/" + body["variables"]["id"].ToString();
}</set-url>
</http-request>
</http-data-source>
</set-graphql-resolver>
<set-graphql-resolver parent-type="Mutation" field="deleteTodoItem">
<http-data-source>
<http-request>
<set-method>POST</set-method>
<set-url>https://todoitems.azurewebsites.net/tables/todoitem</set-url>
<set-body>@{
var body = context.Request.Body.As<JObject>(true);
JObject jsonObject = new JObject();
jsonObject.Add("title", body["variables"]["title"]);
jsonObject.Add("notes", body["variables"]["notes"]);
return jsonObject.ToString();
}</set-body>
</http-request>
</http-data-source>
</set-graphql-resolver>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment