2009-12-30 11 views
1

J'ai un ensemble d'actions qui retournent des données de séries temporelles avec des intervalles de temps spécifiables à la minute. Ils travaillent très bien avec querystrings,
-à-dire
/mycontroller/myaction?from=20091201 10:31&to=20091202 10:34
avec ou sans URL côlons codé, mais je pensais que ce serait bien d'avoir une jolie URL /mycontroller/myaction/from-20091201 10:31/to-20091202 10:34
mais frappe maintenant la peur dans l'entendre d'IIS comme n'aime pas les deux-points dans l'URI, donc je reçois des réponses 'Bad Request'.mvc.net DateTime avec partie de temps dans l'URI

Ma question est la suivante: qu'est-ce qu'un plan d'action recommandé/standard pour m'assurer que je puisse garder le temps? Ai-je besoin d'écrire un ModelBinder personnalisé pour analyser mon propre format datetime? Si les actions prennent juste des chaînes pour from et to et analyser avec un format personnalisé, par exemple "YYYYMMDD-HHmm". Puis-je spécifier un format personnalisé quelque part? Si oui où? Ou devrais-je simplement abandonner cela comme de la folie et m'en tenir aux paramètres de la chaîne de requête?

Oh, et je vois que beaucoup de gens parlent des URL RESTful; d'après ce que j'ai lu il n'y a rien qui dise que les chaînes de requête ne sont pas RESTful - il s'agit plutôt d'une utilisation appropriée des types d'actions HTTP existants.

Répondre

2

Vous avez raison REST ne veut pas dire si ce n'est pas dans une structure de dossiers, ce n'est pas REST.

La structure du chemin est là pour décrire la ressource. Querystrings peut toujours être utilisé pour décrire un sous-ensemble filtré d'une telle ressource. Une plage de dates se qualifie pleinement comme critère de filtre et doit donc être parfaitement RESTful étant passée en tant que chaîne de requête.

+0

Merci Martijn, Donc, je suppose que vous n'allez pas essayer d'entasser cela dans l'URI? Je pense que j'ai surtout aimé ça car j'ai aussi des URIs pour une seule journée et ça fonctionne bien comme controller/action/20091201 – lbp

+0

Oui je laisserais les propriétés du filtre sous forme de chaînes de requête. Même un seul jour si ce jour n'est pas une ressource je pense:/agenda/20091201/rendez-vous/1 versus/cars? BuiltAfter = 20091201. –