Creando un Rest API con JSON api

#me

  • Daniel Noyola
  • @danielnv18
  • daniel@noyola.me

Omnichannel

Omnichannel

Que es JSON API?

json api

Drupal & REST

RESTful Web Services

  • Es complejo de configurar
  • No soporta listas
  • Hay que hacer un request por cada recurso
  • Multiples request para obtener multiples recursos
  • Exceso de informacion

Ejemplo muy simple

Un blog post

  1. GET articles/12
    1. GET articles/12 => tags/34
    2. GET articles/12 => tags/88
    3. GET articles/12 => users/88
      1. GET articles/12 => users/88 => images/5
    4. GET articles/12/comments
    5. GET articles/12 => comment/2
      1. articles/12 => comment/2 => user/8
        1. GET articles/12 => comment/2 => user/8 => image/9

JSON API module

REST

  • GET - Obtener
  • POST - Crear
  • PATCH - Actualizar
  • DELETE - borrar

Request


							GET /articles HTTP/1.1
							Accept: application/vnd.api+json
						

Response


							{
								“data”: {
									“type”: “articles”,
									“id”: “1”,
									“attributes”: {…},
									“relationships”: {…},
									“links”: {…},
								}
								“meta”: {…}
							}
						

Response


							{
								…
								“attributes”: {
									“title”: “Drupal 8!”,
									“body”: “Lorem ipsum”
									…
								},
								…
						  }
						

Extra features

Problemas Originales

❌ Multiples request para multiples recursos

❌ Execeso de informacion

❌ Multiples request para multiples recursos

Resource embedding

GET /articles/12?
    include=author,author.pic,
                tags,
                comment,comment.author,
                comment.author.pic

Sparse fieldsets

GET /articles/12?
    fields[node--articles]=
                title,
                created

Collections & Fields

GET /articles/12?
    filter[field_tags.name][value]=Drupal&
    filter[author.name][value]=editor&
    include=field_tags,field_tags.name,comments&
    fields[comments]=name,albums,members

JSON API extras