一身气质范
2017-09-05 08:45
采纳率: 61.1%
浏览 4.0k
已采纳

java实现接口回调数据

求教各位大神, 如何写接口给别人调用 。 最后保存别人返回的数据

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • 蚂蚁冲锋队 2017-09-06 03:39
    已采纳

    从你提的问题来看,你应该对跨进程通信没有太好的理解。接口设计的目的就是让别人用自己的代码实现的功能或者相反使用别人代码实现的功能,一般
    两方的代码都不在同一个进程中,而进程间是严禁直接通信的(出于数据安全考虑)。自然要想通信必须要遵守一定的规则,如此一来便出现了
    诸多的跨进程通信的技术,比如:socket、RMI、RPC、管道、共享内存等。
    基于上诉原因,你要想自己写接口并提供给别人用,需要搞清楚下面几点:
    1、通信用什么技术
    2、消息通过什么方式封装传输(直接传参数、JSON、protocol buffer 还是.....)
    3、按照实际需求定义好接口方法,尽量通过方法名称就能知道其用途,方法的返回是否需要考虑不同语言的差异
    4、实现你定义的方法,并写测试代码验证代码无误
    5、将接口发布出去

    点赞 评论
  • blownewbee 2017-09-05 08:49

    语言层面的话,定义一个接口,你的函数接受一个这个接口的变量,然后再在你的函数里调用它的方法,实现回调。

    系统层面,你编写一个web服务,将这个地址告诉别人,别人需要通知你的时候,就往上面发请求。

    点赞 评论
  • blownewbee 2017-09-05 08:53
     interface A
    {
    void foo();
    }
    你的代码
    void bar(A callback)
    {
    ...
    callback.foo();
    ...
    }
    
    点赞 评论
  • cloudyzhao 2017-09-05 08:55

    你这个接口是需要你自己实现还是别人实现

    点赞 评论
  • oXiaoKang12 2017-09-05 09:00

    你是java ee 的项目?

    点赞 评论
  • blownewbee 2017-09-05 09:06
     class B inplements A
    {
    void foo() { 回调代码 }
    }
    bar(new B());
    
    点赞 评论
  • 蔡小超 2017-09-05 09:42

    可以采用RPC。给出接口jar包给调用

    点赞 评论
  • 鼠小 2017-09-05 10:06

    “如何写接口给别人调用”

    接口实际上是不能直接是哟个的,调用的时候虽然类型是接口类型,实际上调用的是接口的实现类

    知道了接口,,在去了解下回调,基本上就可以完成需求http://blog.csdn.net/small_mouse0/article/details/59114843

    点赞 评论
  • Carrot_hs 2017-09-05 13:32

    比如这样:
    这里以SpringBoot的为例,语法是kotlin的,与java类似,应该能看懂

    @RequestMapping("/test")                 //这是接口访问路径参数
    @RestController                       //表示这是控制层
    class RoleController {            //类名
        //获取信息
    @GetMapping("/getInfo")      // 定义一个获取信息的接口,地址为/getInfo
    fun getInfoDetails(@RequestParam id: Long): Map<String, Any?> {    //定义接口参数名称为id,参数类型是Long,接口响应参数类型为一个Map,这个Map中的key是字符串类型,value是任意类型
        val map = mutableMapOf<String, Any?>()  //定义一个可变的Map,跟java中new出一个HashMap类似
        try {
            val list = listOf("信息1","信息2",“信息3") //定义一个只读类型的集合,集合里面放3个元素,这里可以改用自己的Service层方法去实现获取数据
            map.put("success", true) //把状态值返回给调用方
            map.put("data", list) //把集合放到map中,返回给调用接口的那一方
        } catch(e: Exception) {
            map.put("success", false)
            map.put("message", "获取失败")
        }
        return map
    }
    }
    

    接口定义就结束了,现在把接口地址发给要调用的一方,这样写:

    url: /analysis/role/getInfo?id={id}
    method: get
    请求参数说明:id类型为Long

    响应参数说明:success类型为Boolean,true表示获取成功,false表示获取失败;data类型为List,message是获取失败的提示信息

    如果把程序部在本机运行,那么浏览器或是测试工具的调用接口方式是这样的:
    http://localhost:8080/test/getInfo?id=4

    点赞 评论

相关推荐 更多相似问题