当前位置: 首页 > 面试题库 >

如何在Java Restful Service中使用json参数

许永年
2023-03-14
问题内容

我如何在我的Web服务中使用json参数,我可以使用@PathParam获取参数,但是获取json数据作为参数却不知道该怎么做。

@GET
@Path("/GetHrMsg/json_data")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_JSON)
public String gethrmessage(@PathParam("emp_id") String empid) {

}

用什么代替@PathParam以及以后如何解析。


问题答案:

我假设您正在谈论使用随请求发送的JSON消息正文。

如果是的话,请注意,虽然不是完全禁止的,有一个普遍的共识是GET请求应该 不会 有请求主体。有关原因的说明,请参见“ 带有请求正文的HTTPGET”问题。

我之所以仅提及这是因为您的示例显示了GET请求。如果您正在执行POST或PUT,请继续阅读,但是如果您确实在项目中执行GET请求,则建议您遵循kondu的解决方案

话虽如此,要使用JSON或XML消息主体,请包括一个(未注释的)方法参数,该参数本身就是表示消息的JAXB bean。

因此,如果您的邮件正文如下所示:

{"hello":"world","foo":"bar","count":123}

然后,您将创建一个类似如下的类:

    @XmlRootElement
    public class RequestBody {
        @XmlElement String hello;
        @XmlElement String foo;
        @XmlElement Integer count;
    }

您的服务方法如下所示:

    @POST
    @Path("/GetHrMsg/html" target="_blank">json_data")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public void gethrmessage(RequestBody requestBody) {
        System.out.println(requestBody.hello);
        System.out.println(requestBody.foo);
        System.out.println(requestBody.count);
    }

哪个会输出:

world
bar
123

有关使用JAXB使用不同种类的HTTP数据的更多信息,建议您检查一下问题“ 如何在RESTfulPOST方法中访问参数 ”,该问题有一些不错的信息。



 类似资料:
  • 我已经做了不少搜索。但是,仍然对包中的“main”参数有疑问。节点项目的json。 填写此字段有何帮助?以另一种方式询问,如果此字段出现,我是否可以以不同的方式启动模块 我知道第二个问题很奇怪。这是因为我在OpenShift上托管了一个Node.js应用程序,但该应用程序由两个主要组件组成。一个是REST API,一个是通知传递服务。 我担心,如果REST API是作为单个线程实现的,那么通知传递

  • 问题内容: 嗨,我正在Go中使用rest API,我希望用户传递JSON参数: 但是它们并非总是必需的,例如,用户只能通过而忽略其他用户。他甚至可以发送0个参数。我怎样才能做到这一点? 问题答案: 从JSON文本解组值时,程序包不需要所有字段都以JSON形式出现,也不需要所有JSON字段都具有匹配的Go字段。 因此,您没有什么特别的事情要做,只需解组您必须拥有的东西,以获取您想要或可能想要的价值。

  • 问题内容: 我正在通过此方法使用RESTfull Web服务: 在我的Android应用中,我想调用此方法。如何使用org.apache.http.client.methods.HttpPost给参数赋予正确的值; 我注意到我可以使用批注@HeaderParam并将标题添加到HttpPost对象。这是正确的方法吗?这样做: 在httpPost上使用setEntity方法将不起作用。它仅使用json

  • 问题内容: 我正在使用一个向服务器上的PHP脚本发出POST ajax请求的应用程序。该脚本将查询数据库并以数组形式返回记录行。(每行一个数组,其中包含id,title等元素)。然后,我想使用对该数组进行编码,并将其传递回javascript,它将使用它来显示记录。 1)如何将JSON编码的字符串返回给javascript?2)javascript将如何遍历行并访问其字段? 问题答案: 要使用jQ

  • 本文向大家介绍如何在PowerShell中使用ErrorAction参数?,包括了如何在PowerShell中使用ErrorAction参数?的使用技巧和注意事项,需要的朋友参考一下 像ErrorActionPreference变量一样,ErrorAction参数的工作原理类似。高级功能和PowerShell中大多数内置cmdlet均支持ErrorAction参数。将非终止错误转换为终止错误,然后

  • 问题内容: 例如,我有4000行,并且定义了X限制。 找到X行后查询停止?还是查询找到所有行,然后从找到的行中获取X行? 谢谢你。 问题答案: 从MySQL参考手册: 如果您将LIMIT row_count与ORDER BY一起使用,MySQL会在找到排序结果的前row_count行后立即结束排序,而不是对整个结果进行排序。如果通过使用索引进行排序,这将非常快。如果必须完成文件排序,则必须先选择所