【问题标题】:Pass JSON parameter in rest call using annotations使用注释在休息调用中传递 JSON 参数
【发布时间】:2015-04-10 10:06:26
【问题描述】:

这是我的主干模型

define([
    'underscore',
    'backbone',
    'models/baseModel'
], function (_, Backbone, BaseModel) {

    var category  = BaseModel.extend({
        initialize: function(options) {
            this.catId = options.catId;
        },
        url: function () {
            var test_json = {
                  k: {
                    k_catId: this.catId,
                    k_dateText: 'last30Days',
                    k_countryCode: $.cookie('countryCode'),
                  }
                }
            var json = JSON.stringify(test_json);
            return applicationUrl + "/service/user/brands/content-category/" + this.catId + "?dateText=last30Days&token=" + $.cookie('token') + "&countryCode=" + $.cookie('countryCode') + "&json=" + json
        }
    });
    return category;
});

我需要将此 json 传递给我的 java 后端,并希望通过“@QueryParam”属性获取它。但它表明变量“json”不能成为解析器。我的java代码如下:

@POST
    @Path("/content-category/{catId}")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public final Object getContentCategoryData(@Auth AuthToken userAuth, @PathParam("catId") long catId, @QueryParam("dateText") String dateText,
                                               @QueryParam("countryCode") String countryCode, @QueryParam("json") String json) {
        long userId = userAuth.getUserId();
        HashMap<String, Object> response = new HashMap<String, Object>();
        try {
          //some code
          }
      catch(Exception e){
        }
      }

寻求任何类型的帮助。谢谢。

【问题讨论】:

    标签: java javascript json rest backbone.js


    【解决方案1】:

    字符串化的 json 不能直接在 url 中作为不编码的查询参数发送。

    var json = encodeURI(JSON.stringify(json));
    

    【讨论】:

      【解决方案2】:

      您将参数作为 URL 的一部分发送,尝试修改 url 以指向端点并在 POST 中发送参数。我会用

      model.set({
        yourData
      });
      

      然后model.save();

      【讨论】:

        【解决方案3】:

        为什么后端没有“token”的参数?

        @QueryParam("token") String token
        

        尝试添加它。

        【讨论】:

        • 谢谢 :-) 但它是在 AuthToken 中处理的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        • 2018-01-31
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多