REST GET verb with parameters

久未见 提交于 2020-01-22 09:37:51

问题


I'm sitting reading on some REST with my fellow teammates, we are writing a RoR application that is going to expose some of its functionality to the rest of the world.

My task on this team is to make a ressource that exposes journal reports. If you call

http://root.com/journalreports

You should get all the journalreports from the service. Thats working like a charm, but I'm confused on how to properly make a ressource that exposes a range of journalreports. Should I make it

http://root.com/journalreports?range=1/2/2010;5/2/2010

Or is this illegal when we talk about REST because of the ?range= interference?

What is the most proper way of giving a REST ressource some parameters?


回答1:


Parameters are perfectly OK, especially for search-resources like in your case (querying a set of journals).

I recently answered similar question (path vs. parameter)




回答2:


REST doesn't make query parameter "illegal" in any way. It's an architectural style, mainly about driving the application by exchanging representations. Considering URIs are meant to be opaque, there's no real difference between http://example.com/page/1 and http://example/?page=1 for example, as far as REST is concerned (it ultimately depends on the representations that are sent, but the choice or URI style tends to be an implementation detail).

What matters is how the client are going to find out about the URIs of your reports. HTML can do this very well with forms and query parameters. Whether your service is for browser consumption or another agent doesn't really matter, you can use the same principles. You could have HTML forms (or equivalent if your client isn't a browser) if you want it to be more flexible or via explicit links on your top page. (You may find it's easier to split the range into two parameters, like "from" and "to", if you want this to be more dynamic.)



来源:https://stackoverflow.com/questions/4044391/rest-get-verb-with-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!