I am not asking the question that is already asked here:
[What is the difference between @PathParam and @QueryParam](https://stackoverflow.com/questions/5579744/what-is-the-difference-between-pathparam-and-queryparam)

This is a "best practices" or convention question.

When would you use `@PathParam` vs `@QueryParam`.

What I can think of that the decision might be using the two to differentiate the information pattern. Let me illustrate below my LTPO - less than perfect observation.

PathParam use could be reserved for information category, which would fall nicely into a branch of an information tree. PathParam could be used to drill down to entity class hierarchy.

Whereas, QueryParam could be reserved for specifying attributes to locate the instance of a class.

For example,

* `/Vehicle/Car?registration=123`
* `/House/Colonial?region=newengland`

`/category?instance`

```
@GET
@Path("/employee/{dept}")
Patient getEmployee(@PathParam("dept")Long dept, @QueryParam("id")Long id) ;

```

vs `/category/instance`

```
@GET
@Path("/employee/{dept}/{id}")
Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ;

```

vs `?category+instance`

```
@GET
@Path("/employee")
Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ;

```

I don't think there is a standard convention of doing it. Is there? However, I would like to hear of how people use PathParam vs QueryParam to differentiate their information like I exemplified above. I would also love to hear the reason behind the practice.