【问题标题】:How to modify consumed webservice and produce another webservice如何修改消费的 Web 服务并生成另一个 Web 服务
【发布时间】:2017-09-05 01:43:24
【问题描述】:

我在spring boot中消费了一个web service(REST),数据是json,格式如下:

  {
    "id": 679,
    "score": 3
    },
      {
    "id": 682,
    "score": 3
    },
      {
    "id": 692,
    "score": 3
    }

使用完数据后,我必须生成一个 Web 服务,它以 JSON 格式提供数据,如下所示

{
   status:{
            "code":"OK",
            "message":"success"
           }

  data:[
        {
        "id": 679,
        "score": 3
        },
          {
        "id": 682,
        "score": 3
        },
          {
        "id": 692,
        "score": 3
        }
       ]
}

所以目前我在控制器部分做的是

 @RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
        public ResponseEntity<List<Model>> getBooking(@RequestParam("lat")double latitude,@RequestParam("lon") double longitude,@RequestParam("id") int id){



            list=getapi(latitude,longitude,id);
            return new ResponseEntity<List<Model>>(list,HttpStatus.OK);
        }
        @ResponseBody   
        public List<Model>  getapi(double latitude,double longitude,int id){
            List<Model> list = Arrays.asList(restTemplatestreetapi.getForObject("http://dataurl, Model[].class));

            return list;

}

我现在的模型类是这样的

public class Model {

    int id;
    int score;

    public int getid() {
        return id;
    }
    public void setid(int id) {
        this.id = id;
    }
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }




}

我使用该服务并直接生成它。但我想生成上述结果,而不是这个。感谢任何帮助。

【问题讨论】:

    标签: java json web-services rest spring-boot


    【解决方案1】:

    您可以在代码中更改响应实体类型,例如

    public ResponseEntity<ResponseClass> getBooking(@RequestParam("lat")double latitude,@RequestParam("lon") double longitude,@RequestParam("id") int id){
    

    根据您的要求定义您的响应类

    public class ResponseClass {
    
    private Status status;
    
    /**
     * If no error found use this method for response
     * 
     * @param message
     * @param data
     * @return
     */
    public static ResponseEntity<ResponseClass> ok(Object data) {
        ResponseClass response = new ResponseClass();
        response.getStatus.setMessage.setCode("ok");
        response.getStatus.setMessage("success")
    
        return ResponseEntity.ok().body(response);
    } }
    
    public class Status {
    private String message;
    private String code;
    //Getter Setter
    }
    

    以列表为数据返回 ResponseClass

    return ResponseClass.ok(list);
    

    您也可以在 ResponseClass 中添加错误状态

    【讨论】:

    • 我更新了问题,你可以看到我的 Model.java 是 Model 类(响应类),它的 id 和 score 作为 Model 对象的属性。你能解释一下吗?
    • @RKR 您的模型类必须根据您的要求保持不变。您只需要再创建一个类来重新格式化您的响应。将 getBooking 类的返回类型更改为 ResponseEntity。你可以参考我上面的代码 sn-p 来创建你的响应类。希望这个解释对你有帮助
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多