如何使用Java/Spring/REST将POST JSON对象数据传递给API

How to pass post json Object Data to an api using java/Spring/rest

本问题已经有最佳答案,请猛点这里访问。

问题陈述

我是Spring/Rest应用程序的新手,在Object中有数据。

现在,我需要将这些数据传递到API。

下面是为一张唱片附上的卷发样品-

1
2
3
4
5
6
curl --request POST \
  --url http://eventapi-dev.wynk.in/tv/events/v1/event \
  --header 'cache-control: no-cache' \
  --header 'content-type: application/json' \
  --header 'postman-token: 67f73c14-791f-62fe-2b5a-179ba04f67ba' \
  --data '{"name":"hotel california","createdAt":1505727060471,"steamUrl":"https://www.youtube.com/watch?v=lHje9w7Ev4U"}'

在终端中点击curl url后得到的响应是正常的

Can I anyone guide me how to write the Code in Java.


您必须使用与此处描述类似的东西,maily bu使用HttpURLConnectionURL

在这里,您注意到在post场景中,JSON数据作为String传递。

然后,您还可以按照这个问题使用该API了解更多的答案。

您还可以使用ApacheHTTPClient并在其站点上浏览示例。

这里也有Apachehttpclient示例。

我不确定是否应该将这些网站上的相关代码样本复制粘贴到这个答案上(为了完整性),但这个想法非常简单,您必须找到一个API来帮助您构建和执行一个REST请求。

另一个API在-tr的答案中列出?n?我们有很多其他的Java API在市场上可用。


可以使用okhttp(https://github.com/square/okhttp)调用此API。例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType,"{
\t"
name":"hotel california",
\t"
createdAt":1505727060471,
\t"
steamUrl":"https://www.youtube.com/watch?v=lHje9w7Ev4U"
}");
Request request = new Request.Builder()
  .url("
http://eventapi-dev.wynk.in/tv/events/v1/event")
  .post(body)
  .addHeader("content-type","application/json")
  .addHeader("cache-control","no-cache")
  .addHeader("postman-token","08af0720-79cc-ff3d-2a7d-f208202e5ec0")
  .build();

Response response = client.newCall(request).execute();


URL将是您的终点。这意味着您需要编写一个控制器来响应您的请求,在您的请求中有一些头,如您所见。这些头用于登录并告诉Spring您正在发送JSON文本。另外,如果您检查您的请求,它是"post",所以您还需要通知您的控制器方法。用模型捕获所有数据是一种良好的实践。

所以你的任务应该是这样的。

  • 创建可以响应URL的控制器。
  • 通知您的控制器方法数据是JSON格式。
  • 通知控制器它需要等待"发布"请求的方法。
  • 将数据分析到模型。
  • 让我们试着处理代码。

    1
    2
    3
    @RequestMapping(value = events.EVENT, method = RequestMethod.POST, consumes = {
            MediaType.APPLICATION_JSON_VALUE }, produces = { MediaType.APPLICATION_JSON_VALUE })
    public Event eventAction(@RequestBody Event event){

    }

    在您的案例中,您需要定义什么是事件。班级应该是这样的。

    1
    2
    3
    4
    5
    6
    7
    public class Quota implements Serializable{
     private String name;
     private Date createAt;
     private String url;

    // create getter setter
    }

    现在您就可以响应这个请求了。在控制器方法内部,您可以执行业务逻辑。