当前位置: 首页 > 知识库问答 >
问题:

在Spring MVC中创建新资源的RESTful方法到底是如何工作的?

孙弘博
2023-03-14
/**
 * Adds a Beneficiary with the given name to the Account with the given id,
 * setting its URL as the Location header on the response. 
 */
// TODO 11: Complete this method. Add annotations to respond to a
//          POST /accounts/{accountId}/beneficiaries containing a beneficiary name
//          with a 201 Created status
@RequestMapping(value = "/accounts/{accountId}/beneficiaries", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void addBeneficiary(
                           long accountId, 
                           String beneficiaryName,
                           HttpServletRequest request, 
                           HttpServletResponse response) {
    accountManager.addBeneficiary(accountId, beneficiaryName);
    //  TODO 12: Set the Location header on the Response to the location of the created beneficiary.
    //  Note the existing entityWithLocation method below.
}
/**
 * Adds a Beneficiary with the given name to the Account with the given id,
 * setting its URL as the Location header on the response.
 */
@RequestMapping(value = "/accounts/{accountId}/beneficiaries", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public HttpEntity<String> addBeneficiary(
        @PathVariable("accountId") long accountId,
        @RequestBody String beneficiaryName,
        @Value("#{request.requestURL}") StringBuffer url) {
    accountManager.addBeneficiary(accountId, beneficiaryName);
    return entityWithLocation(url, beneficiaryName);
}
@RequestMapping(value = "/accounts/{accountId}/beneficiaries", method = RequestMethod.POST)

其中有作为路径变量的{accountId}。例如,这个方法处理类似于“/accounts/123/conturnions”的URL,其中123值存储到一个名为accountId的变量中,然后我可以在代码中使用该变量,事实上,通过@PathVariable注释,我检索了这个值,并将其用作addDecurary()方法的输入参数。

@ResponseStatus(HttpStatus.Created)注释将响应的状态设置为201,表示新资源已正确创建。

好的,现在我的主要疑惑有以下几点:

@RequestBody String beneficiaryName

2)在原始方法中(被改变为excercise解决方案的方法)有两个输入参数:HttpServletRequest请求和HttpServletResponse响应,我认为它们代表旧样式的Servlet应用程序处理的HttpRequest和HttpResponse。

以下参数将替换这些参数:

@Value("#{request.requestURL}") StringBuffer url

我认为它检索生成HttpRequest的URL。对吗?

HttpRequest request.getRequestURL();

共有1个答案

巩镜
2023-03-14

以下是你的问题的答案。

  1. 调用方(发送HttpRequest的)必须如何将此参数放入Http请求?

调用方可以触发一个ajax请求,将JSON传递给控制器。这是发送将使用@RequestBody注释提取的数据的方法之一。当调用方使用JSON数据执行ajax post时,Spring将使用转换器将其转换并传递给您的方法。你需要在你的类路径上有JACKSON jars。

 类似资料:
  • 当我创建一个api并使用laravel资源时,是更好地获取完整的数据,然后选择在资源文件中发送哪些列,还是从数据库中选择数据时,确定应该选择哪些列? 1)

  • 我正在为一个提供临床数据分析的服务设计一个REST风格的API。API允许用户创建患者资源。此资源为服务器端分析提供输入数据。 创建患者既不安全,也不等幂(服务器分配ID),因此使用POST,对患者进行POST 患者资源可能很大,因此它有可以更新的子资源,例如药物。更新药物是幂等的,因为整套药物将被替换,因此使用PUT。 临床分析由请求后/患者/{patientId}/analysisResult

  • 阅读官方文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html 我可以读到关于周围的建议: 围绕通知:围绕连接点的通知,如方法调用。这是最有力的忠告。围绕建议可以在方法调用之前和之后执行自定义行为。它还负责选择是继续连接点,还是通过返回自己的返回值或引发异常来快捷执行建议的方法。 但

  • 这是对二分搜索树的wrt。我以两种方式遍历树。1)顺序遍历树t的顺序遍历是一种递归算法,它遵循左子树;一旦没有更多的左子树要处理,我们就处理右子树。元素按左-根-右顺序处理。2)后顺序遍历树t的后顺序遍历是一种递归算法,它在处理根元素之前遵循左和右子树。元素按左-右-根顺序处理。 我对递归方法和print语句是如何工作的感到困惑。你能给我开导一下吗?

  • 我是Spring MVC的新手,我对这个验证器示例的工作原理有以下疑问: 所以我有这个搜索。jsp页面,用户可以通过两个字段(产品名称和产品所属类别)搜索产品: 因此,在本教程中,我们将对实现自定义验证器的前一个视图的两个字段的输入进行一些限制。在特定情况下,用户必须: 1) 用户必须插入产品名称或类别 2) 名称长度必须至少由3个字符组成。 3) 用户只能按名称或类别进行选择,但不能在产品模型对

  • 问题内容: 我正在寻找一本书或任何其他资源,它们将帮助我学习如何用Java创建RESTful API。在Amazon上,我看到了RESTful Java的几种解决方案 ,但我正在寻找适合新手的解决方案。 期待收到您的建议/意见,谢谢! 问题答案: 我认为我不能仅指向一种资源,而是要走一条路(您可以根据对REST的理解水平对其进行自定义)。我是一个想先弄清楚我的概念,然后再考虑实现这些概念的工具的人