SlideShare a Scribd company logo
1 of 52
RESTful Design: Illustrated
Tommy Lee
Presentation Itinerary
We’ll learn basics of how to REST stuff.
First we’ll go over definitions that we use for REST.
Then We’ll go over examples of how a RESTful API might be designed.
Finally We’ll look at challenges we run into designing RESTful APIs
What is REST?
● REpresentational State Transfer (REST) is an architectural style that defines a
set of constraints and properties based on
● Client – Server architecture
● Uniform Interface
● Statelessness
● Gives client ability to interact with application without prior
knowledge of how to interact.
Let’s go Shopping
We’re going to visit an ecommerce API built in a RESTful fashion.
https://toys4.us/api/v1
Building a Request - REST
Initial Request
https://toys4.us/api/v1/
• /carts – shopping carts
• /checkout – checkout an order
• /products – list of products
• /wishlist – wishlists
Sending a REQUEST – RPC Style
Building a Request – RPC Style
● Step 1. Check the documentation.
OK Documentation Better Documentation
Building a Request – RPC Style
● Step 2. Build request as per documentation
Building a Request – RPC Style
● Step 3: Hope the documentation was up to date.
Breaking Down a Request
Breaking Down a Request
Action
Breaking Down a Request
Action Resource
Action – Verbs that do things
● GET – Retrieve a Resource
● POST – Create a new resource
● PUT- Replace a Resource
● PATCH – Edit part of a resource
● DELETE – Remove a resource
● OPTIONS – See what methods can be sent
● HEAD – Peek at a GET Request, no body.
Action - Verbs
GET Look
POST Make
PUT Replace
PATCH Edit
DELETE Delete
Resources - Nouns
Nouns represent stuff.
- Products
- cart
- toys
- Dolls
- Amount
Breaking Down a Request
Action Resource
Breaking Down a Request
Action Resource
Breaking Down a Request
Action Resource
Subresources
Sub resources are considered things that have a
relationship with the other thing.
Responses
Responses are sent back have a status code, and a message (body).
Status codes are based on standard HTTP status codes.
Body could be in any format, usually but not limited to JSON, XML, HTML.
Body could also include additional instructions for the user to interact with the state
of the object.
HTTP Status Codes
● Status Codes gives us a basic idea of how our REQUEST went and what we
should do.
1xx Informational
2xx Success
3xx Redirection
4xx Client Error
5xx Server Error
Create a new Wishlist
Status: 201 Created
Location:
Adding Items to Wishlist
● Visit the aisle with the item we want. Then we add it to the Wish list
200 OK
ID: 95
Adding Item to Wishlist (POST)
ID: 95
QTY: 2
QTY: 2
201 Created
QTY: 2
Adding Item to Wishlist (POST)
ID: 5
QTY: 1
QTY: 2
201 Created
QTY: 1QTY: 2 QTY: 1
Adding Item to Wishlist (POST)
ID: 5
QTY: 1
QTY: 2
201 Created
QTY
: 2
QTY: 2 QTY: 2
Changing Items to Wishlist (PUT)
ID: 32
QTY: 1
QTY: 2
200 OK
QTY: 1QTY: 2 QTY: 1
Changing Items to Wishlist (PATCH)
ID: 32
QTY: 10
QTY: 2
200 OK
QTY: 10
QTY: 2 QTY: 10
Removing Items from the Wishlist
QTY: 2
QTY: 2
200 OK
QTY: 0
Common Challenges
#1. Using GET for state-changing operations
● GET is considered a safe operation.
● Don’t do this: (The Money means purchase)
Instead, maybe do this?
#2. Sending wrong Status Code on Response
200 OK
But everything
was not
200 OK
Source: homestarrunner.com
#3: Keeping State in the Server
● Server doesn’t know specific state
● State of the application should be on the client.
● Client sends over everything necessary for the
request.
#3: Keeping State in the Server: Pagination
● Server should NOT remember what page you’re on.
VS.
#4: Having Actions in Resources
REST sometimes is hard since we don’t have enough verbs. So we might do this
#4: Having Actions in Resources
1. Try to break out items into better concepts?
Set actions as subresources
i. POST /products/:id/recommendations
ii. POST /layaways/
#4: Having Actions in Resources
Some items have state changes that are complex to model.
1. POST /orders/:id/process
2. POST /orders/:id/fulfill
3. POST /orders/:id/hold
4. POST /orders/:id/cancel
#4: Having Actions in Resources
● Some concepts just ain’t easy to turn into a noun, or naturally map to a RESTful
Resource
● POST /products/search
#4: Having Actions in Resources
● Possible Solution:
Have excellent
documentation
#4: Having Actions in Resources
● Possible Solution: Give the client instructions.
Hypermedia as the Engine of Application State
(HATEOAS)
● We can list the available commands available for a resource
as part of the RESPONSE.
● This gives no expectations for a client to use.
● Much like how a current website works with links.
Leveraging HATEOAS
links: {
fulfill: “/orders/55/fulfill”,
process: “/orders/55/process”,
hold: “/orders/55/hold”,
cancel: “/orders/id:/cancel”
}
When not to REST
Areas where REST could be hard
● Bandwidth limited clients (mobile)
○ Look into limiting fields or something like GraphQL
● Designs that have a lot of events and actions
○ Look at RPC style designs.
● You need server to remember state.
● We could be pragmatic, could use multiple designs
Thank You!
Sources and additional reading
● http://www.restapitutorial.com/lessons/httpmethods.html
● https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
● http://restcookbook.com/Basics/hateoas/
● https://blog.apisyouwonthate.com/understanding-rpc-rest-and-graphql-
2f959aadebe7
● https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
● http://restful-api-design.readthedocs.io/en/latest/relationships.html#standard-
structural-relationships
● Icons by Facebook

More Related Content

Similar to RESTful API Design: Illustrated

Getting Started with Rails
Getting Started with RailsGetting Started with Rails
Getting Started with RailsBasayel Said
 
Python tools for testing web services over HTTP
Python tools for testing web services over HTTPPython tools for testing web services over HTTP
Python tools for testing web services over HTTPMykhailo Kolesnyk
 
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialO'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialTom Hofte
 
REST and REST-fulness
REST and REST-fulnessREST and REST-fulness
REST and REST-fulnessDavid Waite
 
REST Architecture with use case and example
REST Architecture with use case and exampleREST Architecture with use case and example
REST Architecture with use case and exampleShailesh singh
 
REST Architecture with use case and example
REST Architecture with use case and exampleREST Architecture with use case and example
REST Architecture with use case and exampleShailesh singh
 
Api design and development
Api design and developmentApi design and development
Api design and developmentoquidave
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Sumy PHP User Grpoup
 
Designing Practical RESTful APIs
Designing Practical RESTful APIsDesigning Practical RESTful APIs
Designing Practical RESTful APIsHiroshi Ogino
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUDPrem Sanil
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developersPatrick Savalle
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API DesignOCTO Technology
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentalsAgileDenver
 
What is API - Understanding API Simplified
What is API - Understanding API SimplifiedWhat is API - Understanding API Simplified
What is API - Understanding API SimplifiedJubin Aghara
 

Similar to RESTful API Design: Illustrated (20)

Best Practices in Api Design
Best Practices in Api DesignBest Practices in Api Design
Best Practices in Api Design
 
Getting Started with Rails
Getting Started with RailsGetting Started with Rails
Getting Started with Rails
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Switch to Backend 2023
 
Python tools for testing web services over HTTP
Python tools for testing web services over HTTPPython tools for testing web services over HTTP
Python tools for testing web services over HTTP
 
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorialO'Reilly SACon San Jose, CA - 2019 - API design tutorial
O'Reilly SACon San Jose, CA - 2019 - API design tutorial
 
RESTful APIs
RESTful APIsRESTful APIs
RESTful APIs
 
REST and REST-fulness
REST and REST-fulnessREST and REST-fulness
REST and REST-fulness
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
 
REST Architecture with use case and example
REST Architecture with use case and exampleREST Architecture with use case and example
REST Architecture with use case and example
 
REST Architecture with use case and example
REST Architecture with use case and exampleREST Architecture with use case and example
REST Architecture with use case and example
 
Api design and development
Api design and developmentApi design and development
Api design and development
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 
Designing Practical RESTful APIs
Designing Practical RESTful APIsDesigning Practical RESTful APIs
Designing Practical RESTful APIs
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API Design
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentals
 
What is API - Understanding API Simplified
What is API - Understanding API SimplifiedWhat is API - Understanding API Simplified
What is API - Understanding API Simplified
 
Attacking REST API
Attacking REST APIAttacking REST API
Attacking REST API
 

Recently uploaded

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfalexjohnson7307
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfAnubhavMangla3
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 

Recently uploaded (20)

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 

RESTful API Design: Illustrated

  • 2. Presentation Itinerary We’ll learn basics of how to REST stuff. First we’ll go over definitions that we use for REST. Then We’ll go over examples of how a RESTful API might be designed. Finally We’ll look at challenges we run into designing RESTful APIs
  • 3. What is REST? ● REpresentational State Transfer (REST) is an architectural style that defines a set of constraints and properties based on ● Client – Server architecture ● Uniform Interface ● Statelessness ● Gives client ability to interact with application without prior knowledge of how to interact.
  • 4. Let’s go Shopping We’re going to visit an ecommerce API built in a RESTful fashion.
  • 7. Initial Request https://toys4.us/api/v1/ • /carts – shopping carts • /checkout – checkout an order • /products – list of products • /wishlist – wishlists
  • 8.
  • 9. Sending a REQUEST – RPC Style
  • 10. Building a Request – RPC Style ● Step 1. Check the documentation. OK Documentation Better Documentation
  • 11. Building a Request – RPC Style ● Step 2. Build request as per documentation
  • 12. Building a Request – RPC Style ● Step 3: Hope the documentation was up to date.
  • 13. Breaking Down a Request
  • 14. Breaking Down a Request Action
  • 15. Breaking Down a Request Action Resource
  • 16. Action – Verbs that do things ● GET – Retrieve a Resource ● POST – Create a new resource ● PUT- Replace a Resource ● PATCH – Edit part of a resource ● DELETE – Remove a resource ● OPTIONS – See what methods can be sent ● HEAD – Peek at a GET Request, no body.
  • 17. Action - Verbs GET Look POST Make PUT Replace PATCH Edit DELETE Delete
  • 18. Resources - Nouns Nouns represent stuff. - Products - cart - toys - Dolls - Amount
  • 19. Breaking Down a Request Action Resource
  • 20. Breaking Down a Request Action Resource
  • 21. Breaking Down a Request Action Resource
  • 22. Subresources Sub resources are considered things that have a relationship with the other thing.
  • 23. Responses Responses are sent back have a status code, and a message (body). Status codes are based on standard HTTP status codes. Body could be in any format, usually but not limited to JSON, XML, HTML. Body could also include additional instructions for the user to interact with the state of the object.
  • 24. HTTP Status Codes ● Status Codes gives us a basic idea of how our REQUEST went and what we should do. 1xx Informational 2xx Success 3xx Redirection 4xx Client Error 5xx Server Error
  • 25.
  • 26. Create a new Wishlist Status: 201 Created Location:
  • 27. Adding Items to Wishlist ● Visit the aisle with the item we want. Then we add it to the Wish list 200 OK ID: 95
  • 28. Adding Item to Wishlist (POST) ID: 95 QTY: 2 QTY: 2 201 Created QTY: 2
  • 29. Adding Item to Wishlist (POST) ID: 5 QTY: 1 QTY: 2 201 Created QTY: 1QTY: 2 QTY: 1
  • 30. Adding Item to Wishlist (POST) ID: 5 QTY: 1 QTY: 2 201 Created QTY : 2 QTY: 2 QTY: 2
  • 31. Changing Items to Wishlist (PUT) ID: 32 QTY: 1 QTY: 2 200 OK QTY: 1QTY: 2 QTY: 1
  • 32. Changing Items to Wishlist (PATCH) ID: 32 QTY: 10 QTY: 2 200 OK QTY: 10 QTY: 2 QTY: 10
  • 33. Removing Items from the Wishlist QTY: 2 QTY: 2 200 OK QTY: 0
  • 35. #1. Using GET for state-changing operations ● GET is considered a safe operation. ● Don’t do this: (The Money means purchase) Instead, maybe do this?
  • 36. #2. Sending wrong Status Code on Response 200 OK But everything was not 200 OK
  • 38.
  • 39. #3: Keeping State in the Server ● Server doesn’t know specific state ● State of the application should be on the client. ● Client sends over everything necessary for the request.
  • 40. #3: Keeping State in the Server: Pagination ● Server should NOT remember what page you’re on. VS.
  • 41. #4: Having Actions in Resources REST sometimes is hard since we don’t have enough verbs. So we might do this
  • 42. #4: Having Actions in Resources 1. Try to break out items into better concepts? Set actions as subresources i. POST /products/:id/recommendations ii. POST /layaways/
  • 43. #4: Having Actions in Resources Some items have state changes that are complex to model. 1. POST /orders/:id/process 2. POST /orders/:id/fulfill 3. POST /orders/:id/hold 4. POST /orders/:id/cancel
  • 44. #4: Having Actions in Resources ● Some concepts just ain’t easy to turn into a noun, or naturally map to a RESTful Resource ● POST /products/search
  • 45. #4: Having Actions in Resources ● Possible Solution: Have excellent documentation
  • 46. #4: Having Actions in Resources ● Possible Solution: Give the client instructions.
  • 47. Hypermedia as the Engine of Application State (HATEOAS) ● We can list the available commands available for a resource as part of the RESPONSE. ● This gives no expectations for a client to use. ● Much like how a current website works with links.
  • 48. Leveraging HATEOAS links: { fulfill: “/orders/55/fulfill”, process: “/orders/55/process”, hold: “/orders/55/hold”, cancel: “/orders/id:/cancel” }
  • 49. When not to REST
  • 50. Areas where REST could be hard ● Bandwidth limited clients (mobile) ○ Look into limiting fields or something like GraphQL ● Designs that have a lot of events and actions ○ Look at RPC style designs. ● You need server to remember state. ● We could be pragmatic, could use multiple designs
  • 52. Sources and additional reading ● http://www.restapitutorial.com/lessons/httpmethods.html ● https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ● http://restcookbook.com/Basics/hateoas/ ● https://blog.apisyouwonthate.com/understanding-rpc-rest-and-graphql- 2f959aadebe7 ● https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api ● http://restful-api-design.readthedocs.io/en/latest/relationships.html#standard- structural-relationships ● Icons by Facebook