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

如何使用java/Spring/rest将post json对象数据传递给api[重复]

公西俊民
2023-03-14

问题陈述

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

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

下面是为单个记录附上的示例卷曲-

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后得到的响应是确定的

有谁能指导我如何用Java编写代码吗。

共有3个答案

施辉
2023-03-14

Url将是您的终点。这意味着您需要编写一个控制器来响应您的请求,在您的请求中有一些标头,如您所见。这些标题用于登录并告诉spring您正在发送json文本。此外,如果您检查您的请求,则它是“POST”,因此您还需要通知您的控制器方法。使用模型捕获所有数据是一种很好的做法。

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

  1. 创建可以响应您的url的控制器。
  2. 通知您的控制器方法数据为Json格式。
  3. 通知您的控制器方法它需要等待“POST”请求。
  4. 将数据解析为模型。

让我们试着处理代码。

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

}

在您的情况下,您需要定义什么是事件。课堂应该是这样的。

public class Quota implements Serializable{
 private String name;
 private Date createAt;
 private String url;

// create getter setter
}

这就是您现在能够响应此请求的全部内容。在控制器方法内部,您可以执行业务逻辑。

丁阳羽
2023-03-14

您必须使用此处描述的类似内容,例如使用HttpURLConnection

在那里,您注意到JSON数据作为String传递的发布场景

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

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

这里也有Apache HttpClient示例。

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

另一个API在回答中列出-Tr n c H ng,因此我们在市场上有许多其他JavaAPI。

茹正祥
2023-03-14

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

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"name\":\"hotel california\", \n\t\"createdAt\":1505727060471, \n\t\"steamUrl\":\"https://www.youtube.com/watch?v=lHje9w7Ev4U\"\n}");
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();
 类似资料:
  • 我将使用而不是绑定用户输入并将其写入数据库。当将请求处理程序方法(book book)中的数据绑定为book对象时,我感到困惑,那么我应该如何将该对象传递给数据库呢?通常使用,我根据我的模型类逐个变量绑定用户输入,然后使用相关的DAO方法将它们发送到db。我在下面展示我的课程。如果我使用,谁能说出我的请求处理程序方法应该是什么样子? 模型类: 控制器: 公共类簿记员{

  • 问题内容: 这是我的基本功能: 此功能能够连接并在我的数据库上执行查询… 我想创建相同的功能,但更通用。…前一个仅用于一个表(),新表必须能够接受查询的参数作为输入,以及将在其中执行查询的类类型。这将允许我仅使用一行来执行查询。 应该是这样的: 您发现我不知道如何“通用”代码… 我希望已经清楚了… PS 应该是DB()中表的类的代表。 谢谢。 问题答案: 如果您打算返回结果集,请使用:

  • 我正在使用GraphQL查询一个对象,该对象将由大约15个不同的REST调用组成。这是我的根查询,我在其中传入查询的ID。这对于正确解析的主要student对象非常有效。但是,我需要弄清楚如何将ID传递给地址解析程序。我尝试将args添加到address对象,但出现了一个错误,表明args没有从Student对象传递下来。所以我的问题是:如何将客户机查询中的参数传递给GraphQL服务器中的子对象

  • 我在示例中看到如何将消息字符串传递给亚马逊 sns sdk 的发布方法。但是,是否有如何将自定义对象作为消息传递的示例?我尝试将“消息结构”设置为“json”,但随后我得到错误。我应该将对象值传递到参数中的哪个位置? 有什么例子吗?

  • 我试图将一个参数传递给我的@RESTController-Spring Boot类。 在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。 Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。 我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。 尽管我可以定义第二个构造函数,但