verbos una tutorial sirve qué para español ejemplo arquitectura api rest naming-conventions

tutorial - ¿Hay alguna guía de convención de nombres para las API REST?



rest api tutorial español (10)

''UserId'' es totalmente el enfoque equivocado. El enfoque Verb (Métodos HTTP) y Noun es lo que Roy Fielding significó para la arquitectura REST . Los sustantivos son:

  1. Una colección de cosas
  2. Una cosa

Una buena convención de nombres es:

[POST or Create](To the *collection*) sub.domain.tld/class_name.{media_type} [GET or Read](of *one* thing) sub.domain.tld/class_name/id_value.{media_type} [PUT or Update](of *one* thing) sub.domain.tld/class_name/id_value.{media_type} [DELETE](of *one* thing) sub.domain.tld/class_name/id_value.{media_type} [GET or Search](of a *collection*, FRIENDLY URL) sub.domain.tld/class_name.{media_type}/{var}/{value}/{more-var-value-pairs} [GET or Search](of a *collection*, Normal URL) sub.domain.tld/class_name.{media_type}?var=value&more-var-value-pairs

Donde {media_type} es uno de: json, xml, rss, pdf, png, incluso html.

Es posible distinguir la colección agregando una ''s'' al final, como:

''users.json'' *collection of things* ''user/id_value.json'' *single thing*

Pero esto significa que debe hacer un seguimiento de dónde ha puesto la ''s'' y dónde no. Además de la mitad del planeta (asiáticos para empezar) habla idiomas sin plurales explícitos, por lo que la URL es menos amigable para ellos.

Al crear API REST, ¿existen directrices o estándares de facto para las convenciones de nomenclatura dentro de la API (por ejemplo, componentes de ruta de extremo de URL, parámetros de cadena de consulta)? ¿Los gorros de camello son la norma o los subrayados? ¿otros?

Por ejemplo:

api.service.com/helloWorld/userId/x

o

api.service.com/hello_world/user_id/x

Nota: No se trata del diseño de la API RESTful, sino de las pautas de la convención de nomenclatura que se utilizarán para los componentes de la ruta eventual y / o los parámetros de cadena de consulta utilizados.

Cualquier guía sería apreciada.


Creo que deberías evitar las gorras de camello. La norma es usar letras minúsculas. También evitaría guiones bajos y usar guiones en su lugar

Por lo tanto, su URL debe verse así (ignorando los problemas de diseño que haya solicitado :-))

api.service.com/hello-world/user-id/x


Diría que es preferible usar el menor número posible de caracteres especiales en las URL REST. Uno de los beneficios de REST es que hace que la "interfaz" para un servicio sea fácil de leer. El caso Camel o el caso Pascal probablemente sea bueno para los nombres de los recursos (usuarios o usuarios). No creo que haya realmente ningún estándar duro sobre REST.

Además, creo que Gandalf tiene razón, por lo general es más limpio en REST no usar los parámetros de la cadena de consulta, sino que crea rutas que definen a qué recursos desea acceder.

http://api.example.com/HelloWorld/Users/12345/Order/3/etc



Los nombres de dominio no distinguen entre mayúsculas y minúsculas, pero el resto del URI ciertamente puede serlo. Es un gran error suponer que los URI no distinguen entre mayúsculas y minúsculas.


Mire de cerca los URI para recursos web ordinarios. Esas son tu plantilla. Piensa en árboles de directorios; use nombres simples de archivos y directorios similares a los de Linux.

HelloWorld no es una clase de recursos realmente buena. No parece ser una "cosa". Puede ser, pero no es muy similar a un sustantivo. Un greeting es una cosa.

user-id puede ser un sustantivo que estás buscando. Sin embargo, es dudoso que el resultado de su solicitud sea solo un user_id. Es mucho más probable que el resultado de la solicitud sea un Usuario. Por lo tanto, el user es el sustantivo que estás buscando

www.example.com/greeting/user/x/

Tiene sentido para mi. Concéntrese en hacer que su solicitud REST sea una especie de frase nominal: una ruta a través de una jerarquía (o taxonomía, o directorio). Utilice los sustantivos más simples posibles, evitando frases nominales si es posible.

En general, las frases sustantivas compuestas generalmente significan otro paso en su jerarquía. Entonces no tiene /hello-world/user/ y /hello-universe/user/ . Tienes /hello/world/user/ y hello/universe/user/ . O posiblemente /world/hello/user/ y /universe/hello/user/ .

El objetivo es proporcionar una ruta de navegación entre los recursos.


No creo que el camello sea el problema en ese ejemplo, pero me imagino que una convención de nomenclatura más REST para el ejemplo anterior sería:

api.service.com/helloWorld/userId/x

en lugar de hacer que userId sea un parámetro de consulta (que es perfectamente legal), mi ejemplo denota ese recurso en, IMO, de una manera más RESTful.



Si autenticas a tus clientes con Oauth2, creo que necesitarás subrayado para al menos dos de tus nombres de parámetros:

  • Identificación del cliente
  • client_secret

He utilizado camelCase en mi API REST (aún no publicada). Mientras escribía la documentación de la API, he estado pensando en cambiar todo a snake_case, así que no tengo que explicar por qué los parametros de Oauth son snake_case, mientras que otros params no lo están.

Ver: https://tools.ietf.org/html/rfc6749