SlideShare a Scribd company logo
CHOOSING AN API
Improved Processes => Improved Bottom
Line
Copyright Walling Info Systems LLC. All rights reserved
Evolution
Copyright Walling Info Systems LLC. All rights reserved
RPC
Copyright Walling Info Systems LLC. All rights reserved
Calling a function on
another server
RPC Advantages
Copyright Walling Info Systems LLC. All rights reserved
 Simple to understand
 May have lighter payloads
 High performance
RPC Disadvantages
Copyright Walling Info Systems LLC. All rights reserved
 Tight coupling
 Difficult to discover
 Function explosion
REST
Copyright Walling Info Systems LLC. All rights reserved
Representational
State Transfer
REST Advantages
Copyright Walling Info Systems LLC. All rights reserved
 Client and server are decoupled
 Human readable
 Easy to build
 Can be discoverable
REST Disadvantages
Copyright Walling Info Systems LLC. All rights reserved
 Not a single spec
GraphQL
Copyright Walling Info Systems LLC. All rights reserved
 Query based
 Ask for exactly what you want
 Facebook created
Example
Copyright Walling Info Systems LLC. All rights reserved
GraphQL Advanages
Copyright Walling Info Systems LLC. All rights reserved
 Uses less bandwidth
 Typed schema
 Discoverable
 Versioning
 Supports rapid iterations
Disadvantages
Copyright Walling Info Systems LLC. All rights reserved
 Complexity
 Caching
 Young technology
Example using Apollo Client
Copyright Walling Info Systems LLC. All rights reserved
Coupling
Copyright Walling Info Systems LLC. All rights reserved
 RPC - High
 REST - Med
 GraphQL - Low
Chattiness
Copyright Walling Info Systems LLC. All rights reserved
 RPC - Medium
 REST - High
 GraphQL - Low
Complexity
Copyright Walling Info Systems LLC. All rights reserved
 RPC - Low
 REST - Low
 GraphQL - High
Caching
Copyright Walling Info Systems LLC. All rights reserved
 RPC - custom
 REST - HTTP
 GraphQL – Custom (Apollo)
Discoverability
Copyright Walling Info Systems LLC. All rights reserved
 RPC - Poor
 REST - Good
 GraphQL – Good
Versioning
Copyright Walling Info Systems LLC. All rights reserved
 RPC - Hard
 REST - Easy
 GraphQL – ???
Interest in GraphQL
Copyright Walling Info Systems LLC. All rights reserved
 If you are interested in a GraphQL
presentation or workshop, please send me an
email. I will only do this if there is enough
demand.
Good Resources
Copyright Walling Info Systems LLC. All rights reserved
 https://graphql-dotnet.github.io/getting-started/
 https://www.howtographql.com/
 https://github.com/graphql-dotnet/graphql-dotnet
 https://github.com/prismagraphql/graphql-
playground
 I added this one after the meeting. I wish I had
seen it earlier since it was the best tutorial as far
as creating a .NET based GraphQL server. -
https://www.linkedin.com/learning/api-
development-in-dot-net-with-graphql/
Contact Info
Copyright Walling Info Systems LLC. All rights reserved
Email: jwalling@wallingis.com
LinkedIn: https://www.linkedin.com/in/jwalling/
Twitter: @joewalling
GitHub: https://github.com/joewalling
Take a look at
github.com/joewalling/reactadvantage for a react
starter kit that lets you build software quickly.

More Related Content

PDF
On Track with Apache Kafka®: Building a Streaming ETL Solution with Rail Data
DOCX
Example of BDD/scenario based vertical slicing (for PM/PO community)
PPTX
Real-World Pulsar Architectural Patterns
PDF
NMS Tools Comparison
PPTX
Archive integration with RDF
PPTX
Introduction to web socket
PDF
Integrating Apache Kafka Into Your Environment
PDF
Apache Flink @ Alibaba - Seattle Apache Flink Meetup
On Track with Apache Kafka®: Building a Streaming ETL Solution with Rail Data
Example of BDD/scenario based vertical slicing (for PM/PO community)
Real-World Pulsar Architectural Patterns
NMS Tools Comparison
Archive integration with RDF
Introduction to web socket
Integrating Apache Kafka Into Your Environment
Apache Flink @ Alibaba - Seattle Apache Flink Meetup

What's hot (12)

PDF
GCP for Apache Kafka® Users: Stream Ingestion and Processing
PPTX
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
PDF
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
PDF
Flink Forward San Francisco 2018: Xu Yang - "Alibaba’s common algorithm platf...
PDF
Complex made bearable Clojure conj 2019
PDF
Building REST API using Akka HTTP with Scala
PPTX
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
PPTX
Lucee writing your own debugging template
PPTX
Lucee writing your own debugging template
PPTX
Serving Web Apps
PPTX
Caching strategies with lucee
PDF
Reactive streams and components on OSGi - C Schneider
GCP for Apache Kafka® Users: Stream Ingestion and Processing
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
Flink Forward San Francisco 2018: Xu Yang - "Alibaba’s common algorithm platf...
Complex made bearable Clojure conj 2019
Building REST API using Akka HTTP with Scala
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
Lucee writing your own debugging template
Lucee writing your own debugging template
Serving Web Apps
Caching strategies with lucee
Reactive streams and components on OSGi - C Schneider
Ad

Similar to Choosing an API (20)

PPTX
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
PPTX
The API Journey: from REST to GraphQL
PPTX
GraphQL.pptx
PPTX
GraphQL.pptx
PDF
apidays LIVE Paris - GraphQL meshes by Jens Neuse
PDF
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
PDF
GraphQL, REST or RPC? Making the Choice! - Rob Allen, Nineteen Feet Limited
PDF
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
PDF
REST vs. GraphQL: Critical Look
PDF
GraphQL for Native Apps
PPTX
REST API vs. GraphQL: Which Should You Pick for Your Project?
PDF
PDF
Introduction to GraphQL for beginners
PDF
codersera_com (1).pdf
PDF
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
PDF
Graphql
PDF
GraphQL Server - Single point of opportunities
PDF
GraphQL - A love story
PPTX
Build the API you want to see in the world
PDF
API Management for GraphQL
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
The API Journey: from REST to GraphQL
GraphQL.pptx
GraphQL.pptx
apidays LIVE Paris - GraphQL meshes by Jens Neuse
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
GraphQL, REST or RPC? Making the Choice! - Rob Allen, Nineteen Feet Limited
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
REST vs. GraphQL: Critical Look
GraphQL for Native Apps
REST API vs. GraphQL: Which Should You Pick for Your Project?
Introduction to GraphQL for beginners
codersera_com (1).pdf
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
Graphql
GraphQL Server - Single point of opportunities
GraphQL - A love story
Build the API you want to see in the world
API Management for GraphQL
Ad

More from Joe Walling (6)

PPTX
Software Quality
PPTX
Building a starter kit cedg20181010
PPTX
StrategicRM Development
PPTX
Greenville Tech Senior Class April 2015
PPTX
Starting a Software Development Business
PPTX
Amp Up Your Career
Software Quality
Building a starter kit cedg20181010
StrategicRM Development
Greenville Tech Senior Class April 2015
Starting a Software Development Business
Amp Up Your Career

Recently uploaded (20)

PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
AI in Product Development-omnex systems
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
System and Network Administraation Chapter 3
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
medical staffing services at VALiNTRY
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
Which alternative to Crystal Reports is best for small or large businesses.pdf
AI in Product Development-omnex systems
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
System and Network Administraation Chapter 3
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Odoo Companies in India – Driving Business Transformation.pdf
CHAPTER 2 - PM Management and IT Context
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
medical staffing services at VALiNTRY
How Creative Agencies Leverage Project Management Software.pdf
Reimagine Home Health with the Power of Agentic AI​
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Operating system designcfffgfgggggggvggggggggg

Choosing an API

Editor's Notes

  • #3: Sometimes when you start talking about APIs, it can get like a religious war. My suggestion is that instead of thinking of it in regards to one being better than another, you need to think in terms of what you are trying to accomplish and what will best meet those needs.
  • #4: Just because something is newer, doesn’t necessarily mean it is better.
  • #5: Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer on a network without having to understand the network's details. When implemented in http, it is a web api. Includes xml-rpc and soap
  • #6: From the consumers standpoint, they are simple to understand and use since you just make a function call passing in parameters. However, if you are using SOAP and trying to create an RPC endpoint without tooling, it can be difficult. Lighter payloads somewhat depends on if you are using SOAP. The SOAP envelope adds some weight. It also depends on the size of your REST resources you are comparing it to as requests will return an entire resource, not just the part you may be interested in.
  • #8: REST is a network paradigm described by Roy Fielding in a dissertation in 2000. REST is all about a client-server relationship, where server-side data are made available through representations of data in simple formats. This format is usually JSON or XML but could be anything. Actions and relationships may be made discoverable via a concept known as hypermedia controls (HATEOAS). This is a powerful yet often ignored feature of REST. REST must be stateless. Responses should declare cacheablility since it helps your API scale if clients respect the rules. This can be set by the normal http means such as Expires headers. Uniformity and consistency is important in your REST API. Iif you’re using HTTP you should utilize HTTP features whenever possible, instead of inventing conventions Odata and JSON-API are examples of REST standards
  • #9: REST is dealing with things from the point of resources. They are described as nouns. Easy to build because no toolkits are required and the output is human readable
  • #10: It is an architectural pattern rather than a single spec. HAL (Hypertext Application Language), HAETOAS, Ion, Json-API, Odata A couple months ago when I did the presentation on REST, you may have noticed that most people using REST did it differently and were not using all the verbs as suggested.
  • #11: GraphQL is essentially RPC, with a lot of good ideas from the REST/HTTP community tacked in. It is one of the fastest growing API ecosystems out there It is a standard that allows the client application to use a query to request exactly the desired data. You ask for specific resources and specific fields, and it will return that data in the response. You can also create mutations to add or update data and you can create subscriptions so that when data changes or specific events happen the subscribers are notified. It allows the front-end developer, to write queries that have the exact data shape they want. In addition to allowing fewer data elements to be returned in a query, it also reduces the number of HTTP requests necessary to retrieve data for multiple resources. With REST APIs, you may get a list of customers in one call and then have to make individual calls for each customer to get their orders. All of these individual calls are much slower than the single call that can be made with GraphQL.
  • #12: Left side shows the GraphQL query and the right side shows the json response
  • #13: The lower bandwidth is very important to mobile devices Only return the desired data elements instead of all of them. No over or under fetching data. Underfetching => n+1 issue It can batch queries so that it is returned in one package rather than having to make multiple queries to the server. Talk about a blog: Post, author info, comments With the variety of different mobile and web devices, you may have different data being returned to different devices. You can add data elements to the schema on the server without having to worry about versioning. When new elements are added, old clients will still work since they aren’t using these. Removing items is a different matter. A common pattern with REST APIs is to structure the endpoints according to the views that you have inside your app. This is handy since it allows for the client to get all required information for a particular view by simply accessing the corresponding endpoint. The major drawback of this approach is that it doesn’t allow for rapid iterations on the frontend. With every change that is made to the UI, there is a high risk that there will be more (or less) data required than before. This results in the backend having to be adjusted to account for the new data needs. This approach requires both front and backend development. When using GraphQL, if the database already includes the desired information, all of the changes can be made on the client.
  • #14: By using the Apollo client, you can overcome some of the complexity and get caching included.
  • #18: What makes it seem even more complex for .NET developers is that there aren’t a lot of good, working examples. There are even fewer that use the latest versions of .NET Core and other framework elelments.
  • #20: REST discoverability is good if it is implemented properly. I see few REST APIs where this is the case.
  • #21: While there is no guidance on GraphQL versioning, this may not be a negative as the client has more control of the shape of data they are retrieving.