Pergunta

Meu projeto expõe dois tipos de recursos:

  1. Images
  2. Etiquetas

Gostaria clientes para ser capaz de solicitar imagens aleatórias pelo seu tag (s). Por exemplo: Dê-me imagens aleatórias que estão marcados com o "New York" e "Inverno". O que seria um olhar projeto RESTful como neste caso?

Foi útil?

Solução

Para resumir toda a discussão nos comentários, e não para mudar a minha proposta inicial, este é o que eu chegar finalmente:

Você deseja acessar imagens através de etiquetas; cada etiqueta refere-se a um conjunto de imagens. Como uma determinada tag pode ser usada muito mais do que o outro (digamos, Nova York Fotos usado muito mais do que de Chicago), você deve usar uma configuração RESTful que permite o armazenamento em cache, assim você pode armazenar em cache New York fotos. IMHO, a solução seria:

  • Cada imagem tem um URI fixo:

    http://www.example.com/images/12345
    
  • Cada marca tem também um URI:

    http://www.example.com/tags/New_York/random
    

    Este URI atua como um despachante aleatória de imagens no conjunto; ele retorna um 303 See Outros resposta, redirecionando para uma imagem aleatória do conjunto. por definição, este URI não deve ser armazenada em cache, e um fixo deve, e o navegador não devem entender que o redirecionamento para o segundo recurso é permanente, por isso é ideal.

  • Você pode até mesmo acessar todo o conjunto via:

    http://www.example.com/tags/New_York
    

    Este acesso resultaria em uma 300 múltiplas escolhas resposta; ele retorna todo o conjunto (como URIs, não como imagens!) para o navegador eo navegador decide o que fazer com ele.

  • Você também pode usar intersecção de várias tags:

    http://www.example.com/tags/New_York/Autumn/Manhattan/random
    http://www.example.com/tags/Autumn/Manhattan/New_York/random (equivalent to the previous one)
    http://www.example.com/tags/New_York/girls/Summer/random
    etc.
    

Então você tem um URI fixo para cada imagem, um URI fixo para cada tag e seu conjunto relacionado de fotos, e uma URI fixo para um despachante aleatório que cada marca tem. Você não precisa usar quaisquer parâmetros GET como outras soluções possíveis, então isso é como RESTful como você pode começar.

Outras dicas

Eu tenho lutado sozinho com esta questão. O que acabamos implementação foi um HttpResponseRedirect de, por exemplo:

http://www.example.com/randomNewYorkImage

para uma imagem New York aleatória:

http://www.example.com/images/New_York/1234 .

O primeiro recurso pode ser concebida como um aleatória New York imagens despachante. Esta solução irá carregar mais o servidor, uma vez que irá ser solicitada dois recursos, mas é como RESTful como você pode começar.

Editado: Além disso, se você estiver cache, cada imagem será no cache, e seu servidor vai de enviar uma imagem para enviar apenas o redirecionamento, como o cache irá interceptar o segundo pedido, e, assim, aliviar a sua carga do servidor.

identificação de recursos multi-dimensional é um desafio.

Seu recurso é uma imagem, de modo que é o seu URI. Além disso, uma imagem específica tem um URI específico que nunca muda.

Seu "pela tag" é um atributo de não-identificação do recurso. Para isso, uma string de consulta pode BELP.

Aqui é o meu primeiro pensamento.

  • http://www.example.com/MyStuff/image/ id / - imagem específica por id
  • http://www.example.com/MyStuff/image/?tag= tagname -. Image aleatória com uma determinada tag, implicitamente, count=1
  • http://www.example.com/MyStuff/image/?tag= tagname &count=all - todas as imagens com uma determinada tag em uma ordem aleatória (count=1 é o padrão, o que lhe daria uma imagem arbitrária)

Eu faria algo como http://foo.com/image/tagged/sometag/random e parar de perder o sono por isso.

Eu concordo com Tríptico em um presente. De uma forma adicionando aleatória para o fim do URI faz sentir como uma operação, mas se ele tem como escopo a um tag, então você está realmente apenas refinando o contexto.

Em seu exemplo de:

/ image / marcado / sometag / random

recurso

imagens -> marcar escopo (todas as imagens com as tags) -> tag específica (todas as imagens com tag X) -> aleatório (um recurso da lista escopo de imagens com tag X)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top