2011-10-25 7 views
20

Estoy decidiendo cómo organizar la URL y poner la configuración regional en ella. Tengo dos opciones:URL RESTful: ¿dónde debería ubicar la configuración regional? example.com/en/page vs example.com/page?locale=en

  1. example.com/en/page
  2. example.com/page?locale=en - Google manera
  3. en.example.com/page - ISN' t calidad porque estoy usando subdominios

de un lado example.com/en/page se ve mejor y más compacto que example.com/page?locale=en. Por otro lado tenemos dos URL example.com/en/page y example.com/ru/page para un recurso con dos representaciones. Por supuesto en el caso example.com/page?locale=en tenemos dos URL para un recurso también, pero es un poco más RESTANTE en mi gusto.

¿Cuál es la mejor práctica? ¿Qué estás usando y por qué?

Respuesta

25

La localización forma parte de Content-Negotiation en Restful API.

Así que mi forma de preferencia lo haría a través de encabezados. HTTP ofrece una forma estándar de definir el idioma deseado. Eche un vistazo al encabezado Accept-Language.

+3

Sí. Sé sobre Accept-Language. Pero en Rusia, por ejemplo, mucha gente usa la configuración en inglés pero prefiere el contenido en ruso. Entonces, si solo utilizaré Accept-Language, no tendrán la oportunidad de cambiar el idioma del contenido (excepto, por supuesto, cambiar la configuración regional del navegador). La solución más común es el cambio de idioma en el diseño del sitio.Así que estoy tratando de entender cuál es la mejor manera de organizar dicho conmutador. – petRUShka

+2

Veo, ¿entonces sus api-client's son navegadores (por ejemplo, a través de llamadas AJAX)? Luego, buscaría el modo de parámetro de url propuesto (como? Lang = en), porque la oferta tiene semántica 'opcional' (con la opción de aceptar el encabezado Aceptar idioma). –

+0

Navegadores y servicios externos. Gracias por tu opinión, estoy pensando de la misma manera. – petRUShka

13

De https://www.w3.org/International/questions/qa-accept-lang-locales:

La cabecera HTTP Accept-Language fue originalmente sólo pretende especificar el idioma del usuario. Sin embargo, dado que muchas aplicaciones necesitan conocer la configuración regional del usuario, la práctica común ha utilizado Accept-Language para determinar esta información. No es una buena idea utilizar solo el encabezado HTTP Accept-Language para determinar la configuración regional del usuario. Si usa Accept-Language exclusivamente, puede esposar al usuario en un conjunto de opciones que no son de su agrado.

Mi preferencia:

  • Solicitud
    • utiliza un parámetro de consulta
    • de repliegue a Accept-Language cabecera si el parámetro de consulta no es especificada
    • de repliegue a documentado Configuración regional predeterminada si el encabezado Accept-Language es No definido
  • Respuesta
Cuestiones relacionadas