我是grails的新手,我正在学习。我想使用webservice API(Rest)。 我搜索了这个例子,但没有得到一个好的。 我的要求是: 要使用的地址是:localhost:8080 / order / createOrder;这将提供JSON。 我的JSON格式为:
//and from JSON is:
username: 'abc',
password: 'xyz',
order: {
orderDate
orderNumber
subTotal
shipping
discount
netTotalPaid
creditApplied
transactionId
specialInstruction
}
我必须从JSON获取用户名,密码和订单。 Order是一个Domain类,我将在其中设置JSON数据。
请给我一个详细解释。
如果JSON不是REST服务,即应用程序本身提供JSON作为服务? ,如果我们不需要使用REST服务?
答案 0 :(得分:1)
获取JSON
再次,几个选项。我喜欢使用REST Client Builder Plugin来做这类事情。它配备了许多实用方法,让您的生活更轻松。
例如,要从终点获取JSON,它将类似于:
def resp = rest.get("http://grails.org/api/v1.0/plugin/acegi/")
def myJson = resp.json;
使用JSON
有几个选择。
如果Order
是一个完全映射到这些值的域类,那么您可以使用GSON
插件。这样可以对POJO(或grails域对象)进行序列化和反序列化。用法的一个例子是:
Gson gson = new GsonBuilder().create()
Order myOrder = gson.fromJson(myJsonData, Order.class)
println myOrder
或者如果你想保留Grails,你可以使用转换器..
def myOrder = new Order(request.GSON);
就个人而言,我更喜欢前者。
设计提示
不要将所有这些东西放在控制器中。将其抽象为服务,以便您的控制器将其简单地传递给服务层,而不关心它发生了什么。
将您的URL放在某种对象或字符串中的RESTful服务中。如果您更改API端点,则不必在应用程序上更新它。
额外阅读
您可以在GSON plugin home找到要添加到构建配置的依赖项。
The Docs将向您展示如何使用GSON插件。
And these Docs将向您展示如何使用REST Client Builder插件。
答案 1 :(得分:0)
我想这会有所帮助..
def restBuilder = new RestBuilder()
def resp = restBuilder.get("http://localhost:8080/order/createOrder")
JSONObject mapData = data.getJSONObject(resp.json)
JsonSlurper slurper = new JsonSlurper()
def object = slurper.parseText(mapData.toString())
def order = Order(object)
这里的订单是pojo类