同一个应用中的网址扩展和休息服务的最佳做法

时间:2014-04-17 10:10:59

标签: jsp rest spring-mvc servlets httprequest

我正在开发一个由用户的管理面板(用户,角色等)组成的网络应用程序。到目前为止,我的网址是这样的:

/ myapp / admin / users - >返回用户表的视图 / myapp / admin / roles - >返回角色表的视图 .. ..

返回数据的请求,如下所示: / MYAPP /管理/ getRoles / MyApp的/管理/的getUser?用户名= XX

但我最近开发了一个REST服务,我的思想发生了一些变化。我想包括url,例如/ users / username等。

哪些是包含返回不同类型数据的网址的最佳做法? (html views,json ..)

也许包括这样的扩展名?

/myapp/admin/users.jsp - >返回用户表的视图 / myapp / admin / users - >返回带有用户的json

我还没有看到的另一件事是很多人使用的.go和.do扩展名。

我有以下视图解析器:

<!-- Defining which view resolver to use -->
<bean class= "org.springframework.web.servlet.view.InternalResourceViewResolver" > 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean>

我请求/myapp/admin/users.jsp但返回404.这是我的servlet映射:

<servlet-mapping>
  <servlet-name>AdminPanel</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

我是否需要直接在控制器中定义扩展名?

@RequestMapping(method = RequestMethod.GET,value =“/ users.jsp”) - &gt; VIEW @RequestMapping(method = RequestMethod.GET,value =“/ users”) - &gt; DATA

该解决方案是最佳做法吗?

我会赞美并投票给所有有用的答案。谢谢

1 个答案:

答案 0 :(得分:1)

扩展是一种流行的选择,但RESTful方式是通过Content Negotiation。请求者会在Accept标题中加入他们可以接受的格式,例如text/htmlapplication/json。服务器将选择一种提供的格式并使用该格式返回响应。