User Tools

Site Tools


rest

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rest [2018/02/28 14:56] skipidarrest [2023/06/06 09:53] (current) skipidar
Line 6: Line 6:
 Es werden Methoden übergeben: Es werden Methoden übergeben:
  
-| |GET | POST | PUT | DELETE| PATCH| +         | GET | POST | PUT | DELETE| PATCH| 
-|Safe|x| | | | | +|Safe                            
-|Idempotent|x|x| |x| |+|Idempotent|         x           |
  
  
Line 14: Line 14:
  
 A good describtion is here: \\ A good describtion is here: \\
-http://www.se.uni-hannover.de/pub/File/kurz-und-gut/ws2011-labor-restlab/RESTLab-HTTP-Serhat-Esen-kurz-und-gut.pdf+https://restfulapi.net/idempotent-rest-apis/
  
  
Line 25: Line 25:
  
  
-===== compare REST vs just some HTTP based interface ======+===== Maturity of REST ======
 {{https://martinfowler.com/articles/images/richardsonMaturityModel/overview.png}} {{https://martinfowler.com/articles/images/richardsonMaturityModel/overview.png}}
  
  
-==== What makes REST different from SOA or HTTP-based interfaces ====+==== What makes REST architecture mature? 4 steps ====
 https://martinfowler.com/articles/richardsonMaturityModel.html https://martinfowler.com/articles/richardsonMaturityModel.html
  
Line 61: Line 61:
 </code> </code>
  
 +
 +
 +=== Glossary === 
 +| Compound Documents | <WRAP> 
 +To reduce the number of HTTP requests, servers MAY allow responses that include related resources along with the requested primary resources. Such responses are called “compound documents”.
 +https://jsonapi.org/format/#document-compound-documents 
 +</WRAP> |
 +|Sparse Fieldsets| A client MAY request that an endpoint return only specific fields in the response on a per-type basis by including a fields[TYPE] parameter. <code>GET /articles?include=author&fields[articles]=title,body&fields[people]=name`</code> |
  
  
Line 212: Line 220:
  
  
 +
 +==== HAL - Hypertext Applicaiton Language ====
 +
 +**REST** is a concept of application architecture. Its multiple maturity states are defined above: Stack of POX, Ressource, Verbs etc.
 +
 +
 +**HATEOAS** is a concept of application architecture. It defines the way in which application clients interact with the server, by navigating hypermedia links they find inside resource models returned by the server.
 +
 +To implement HATEOAS you need some standard way of representing resources, that will contain hypermedia information (links to related resources), for example, something like this:
 +
 +
 +**HAL** is one of such standards. It is a specific format of resource presentation, that can be used to implement HATEOAS.
 +
 +
 +  * HAL Introduction: http://javaeeeee.blogspot.ch/2015/02/introduction-to-hypertext-application.html
 +  * HAL browser: http://api.m.ox.ac.uk/browser/#/
  
 ===== REST API Example ===== ===== REST API Example =====
Line 318: Line 342:
  
 </code> </code>
 +
 +
 +== CURIES ==
 +Cut URI - an approach to reduce the long URLs
 +
 +<code>
 +GET http: //api.ex.com/tales/7dwarfs/1{
 + data{
 + id: 1,
 + type: characters,
 + attributes{
 + name: "oink",
 + size: "1m",
 + race: "dwarf"
 + },
 + curies{
 + {
 + name: "root",
 + href: "http://api.ex.com/v1/"
 + },
 + links{
 + self: "root:tales/7dwarfs/characters/1", 
 + prev: "root:tales/7dwarfs/characters/0", 
 + next: "root:tales/7dwarfs/characters/2", 
 + }
 + }
 +}
 +</code>
 +
rest.1519829771.txt.gz · Last modified: (external edit)