我的邮递员邮寄请求应该是什么样的? (发布请求的正文)

时间:2019-10-01 15:44:53

标签: java api post postman

@PostMapping(path="/check/keywords")
    @RequestMapping(value = "/check/keywords", method = RequestMethod.POST)
    public int totalKeywords(@RequestBody String text,@RequestBody String[] keywords) throws Exception{
        System.out.println(text);
        System.out.println(keywords.length);
        return EssayGrader.totalKeywods(text);
    }
  

我已针对此请求尝试了各种不同的方法,但似乎没有任何效果。它给出错误400或500内部服务器错误。   我想从Html页面将字符串类型的文本和一些关键字以列表或数组的形式传递给我的Java代码,以查看该文本字符串中有多少个关键字。   你能帮我吗?

1 个答案:

答案 0 :(得分:1)

我相信在方法级别只能有一个@RequestBody带注释的参数。我建议将您的文本和关键字作为JSON文档发送到HTTP请求的请求正文中。例如。可能看起来像这样:

{ "text": "a simple text", "keywords": ["simple", "text"] }

编写一个包含这两个值的简单Java类,例如

class Data {
   String text;
   String[] keywords;

   //don't forget getter + setter + noargs constructor
}

将您的方法更改为:

@PostMapping(path="/check/keywords", consumes="application/json", produces="application/json")
public int totalKeywords(@RequestBody Data data) {
    String text = data.getText();
    String[] keywords = data.getKeywords();
    // do whatever...
    return ...
}

在发送邮递员POST请求时,将Content-Type标头设置为application/json!并确保您在类路径上具有Jackson库(“自动”将JSON结构映射到Java类/对象)(如果使用Spring Boot,则在导入此依赖项时应该已经存在这种情况:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

希望这会有所帮助。祝你好运!