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

有人能澄清@requestbody吗

卫沈义
2023-03-14

我对@requestbody做了一些阅读和研究,但我仍然无法理解它的目的。

在假设情况下:

  • RESTful API只接受用户的bookname,并返回图书的authorname.
  • @requestbody注释添加getauthor方法中,该方法将bookname作为参数。

从我在一个类似的问题中读到的答案来看,这在这个场景中是如何应用的?将a转换为B,然后将B转换为a,这样用户就可以将其视为JSON对象。我好困惑!

共有1个答案

赫连宏伯
2023-03-14

来自Javadoc:

指示方法参数的注释应该绑定到web请求的正文。请求的正文通过HttpMessageConverter传递,以根据请求的内容类型解析方法参数。或者,可以通过使用@valid注释参数来应用自动验证。

在您的示例中,使用@requestbody是没有意义的。您希望获得与一本书对应的作者名称

您发送get/books/mybook/author

控制器将是

@RestController
public class BooksRestController{

    @RequestMapping(value="/books/{bookName}/author", method=RequestMethod.GET)
    public Map<String,String> getAuthor(@PathVariable bookName){
        ...
        Map<String,String> author = new HashMap<String,String>();
        author.put("author",bookAuthor);
        return author;
    }
}
@RestController
public class BooksRestController{

    @RequestMapping(value="/books", method=RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)
    public Book createBook(@RequestBody Book book){
        ...
        //save book
        book = bookService.save(book);
        return book;
        //Book is going to be serialized as JSON because of the implicit 
        //@ResponseBody annotation from @RestController
    }

Book.class:

public class Book{
    private String name;
    private String author;
    //getters setters;
}
 类似资料:
  • 问题内容: 我有一张桌子Table1 当我使用以下查询查询该表时 我得到的输出为 但是以同样的方式,当我使用以下查询时,我没有任何输出。 有人请给我指导,为什么它会那样工作,以及如何使用rownum。 问题答案: 汤姆回答了许多与Oracle有关的问题 简而言之,在应用where子句之后和应用order by子句之前,rownum可用。 在RowNum = 2的情况下,where子句中的谓词将永远

  • 我有一个实心的无圈图,其形式如下: 逐个移除度数为1(只有一条边)的顶点 如果有多个意见,最小值的顶点将被删除 当顶点被移除时,它旁边的顶点将被标记 这将持续到图只剩下一个顶点 下面是一个示例: 演示文稿是: 我如何将此演示转化为下列矩阵: 我已经为此苦苦挣扎了一段时间,所以如果有人能帮忙,我将不胜感激!

  • 在我们教授的代码中,他定义了他的泡泡排序函数(和其他排序函数),如下所示: 他已经定义了访问修饰符、返回类型(或没有)、函数名及其所需参数。它甚至不返回可以进行比较的对象,所以我觉得这有点让人困惑。非常感谢您的帮助。

  • 问题内容: 更改了该方法的结构后,当defer调用两次时会发生什么? 例如: 其中当最后叫什么名字? 问题答案: 它取决于方法的接收者 和 变量的类型。 简短的答案:如果您使用的是包,则延迟的方法将正确关闭两个实例,因为它们具有 指针 接收器, 并且 由于返回了 指针 ( 指针 也是如此)。请参阅下面的推理和解释。 为避免混淆,我建议使用不同的变量,这样会清楚您 想要 什么以及 将要 关闭的内容:

  • 我试图了解更多关于新的苹果iBeacon协议的信息,以及它将如何应用于其他设备。 我已经看到协议本身已经被逆向工程:http://developer.radiusnetworks.com/2013/10/01/reverse-engineering-the-ibeacon-profile.html这是个好消息,但是我对协议还有一些进一步的问题。 协议是否设计为允许自定义文本消息发送到接收方客户端?

  • 我对Firebase定价模型有点困惑,特别关注的是连接或更准确地说是并发连接。 让我们举一个iOS移动应用程序FanZONE的例子: 用户将在足球比赛期间创建组。他们将对实际比赛进行评论,评论将立即显示在每个会员屏幕上。 这种情况是否意味着参与评论/查看的每个用户都会对一个连接计数 那么,如果一个组包含100个积极关注屏幕并不时发表评论的用户,那么每90分钟是否有100个连接 后台有应用程序的用户