ApiRest
Recomendaciones Generales
- Debe ser fácil de usar y hacer la vida del desarrollador mas "suave"
Términos
Recurso
: Es un sustantivo, que representa por lo general un objeto o actor del sistema,colección
: Conjunto de recursosmétodo
: Es un verbo o acción que eventualmente se le asocia a un recurso.
HTTP Methods
GET
Obtiene un recurso existente
users/2
OBTENER item conid 2
users
OBTENER todos los usuariocompanies/3/users
OBTENER todos los usuarios de la compañia3
companies/3/users/4
OBTENER el usuario4
de la compañia3
POST
Crea un recurso existente
user/
CREAR un usuariouser/12/order/456
CREAR una nuevaorden
para elusuario 12
PUT
Reemplaza completamente el recurso existente o puede crearlo en caso que no exista. En algunos casos, si las reglas del negocio lo permiten, se suele precindir del POST y emplear unicamente PUT
user/5
MODIFICAR el usuario conid 5
user/12/order/456
MODIFICAR laorden 456
delusuario 12
DELETE
Elimina un recurso existente
user/5
ELIMINAR el usuario conid 5
user/12/order/456
ELIMINAR laorden 456
delusuario 12
user/12/order/
ELIMINAR las todas lasordenes
delusuario 12
PATCH
A diferencia del PUT, este mtodo permite modificar parcialmente un recurso existente. ver rfc5789 y JSON PATCH rfc6902
user/5
MODIFICAR el usuario conid 5
user/12/order/456
MODIFICAR laorden 456
delusuario 12
HTTP Response
2xx
(success)
200
: Ok.201
: Created. El recurso fue creado.202
: Accepted. Solicitud aceptada, pero en proceso.204
: No Content. Completado, pero no retorna resultado ( ej. DELETE )
4xx
(client error)
400
: Bas Request, el servidor no puede entener lo que el cliente pide.401
: Unauthorize, el recurso existe, pero el clinete no tiene permisos para usarlo.403
: Forbidden, el recurso existe, el cliente tiene los permisos (de api), pero por alguna razon no tiene permisos para acceder a la pagina (por lo general configuracion de permisos a nivel de servidor web).404
: Not Found, el recurso no esta disponible por ahora.405
: Method Not Allowed.406
: Not Acceptable410
: Gone, el recurso ha sido movido intencionalmente.
5xx
(server error)
500
: Internal server error, Recurso valido, pero ocurrio una condición inesperada.503
: Service unavailable, servidor apagado o no disponible.
Searching, sorting, filtering and pagination
-
Sorting
GET /companies?sort=rank_asc
-
Filtering
/companies?category=banking&location=india
-
Pagination
/companies?page=23
-
Limit y offset
/companies?limit=50&offset=100
-
Mayor que, menor que
/articles?age.gt=21&age.lt=40
-
otros parámetros
/companies?myCompanies=true
Versionado
http://api.yourservice.com/v1/companies/34/employees
: version 1http://api.yourservice.com/v2/companies/34/employees
: version 2http://api.yourservice.com/v2.2/companies/34/employees
: version 2.2
HATEOAS
Hypermedia as the Engine of Application State (hipermedia como motor del estado de la aplicación), el servidor nos devuelve la representación de un recurso, parte de la información devuelta serán identificadores únicos en forma de hipervínculos a otros recursos asociados.
{
"id": 711,
"manufacturer": "bmw",
"model": "X5",
"seats": 5,
"drivers": [{
"id": "23",
"name": "Stefan Jauker",
"links": [{
"rel": "self",
"href": "/api/v1/drivers/23"
}]
}]
}